Manejo de la orientación en Interface Builder

Necesito manejar la orientación (vertical - horizontal) en mi aplicación. El diseño básico de mi pantalla es UIView -> UIImageView -> UITableView (Background = ClearColor) (en ese orden z) para que parezca que la tabla tiene una imagen de fondo.

Necesito hacer lo siguiente:

  • Diferentes imágenes en UIImageView en ambos modos.
  • Cada celda de la tabla debe tener 3/4 de imágenes dispuestas una al lado de la otra (3 en vertical y 4 en horizontal).

Todo esto debe hacerse en el generador de interfaz (en la mayor medida posible).

Lo que he probado hasta ahora:

  • IB le da la opción de Orientación para Ver. Pero no pude encontrar una manera de configurar una imagen diferente para cada orientación.
  • Siguiendo una jerarquía donde derivo 2 VC separados (con 2 NIB separados) de una sola clase base. El único problema es que esta es una compilación universal, por lo que tendré que hacer esto para cada vista tanto en iPad como en iPhone.

¿Hay algún otro método mejor? Si no, ¿es mejor la segunda opción? ¿Algún problema con ese enfoque?

preguntado el 22 de mayo de 12 a las 07:05

2 Respuestas

Lo que intenta lograr es agregar diferentes vistas según la orientación en el xib. La respuesta corta es que no puede,

Sin embargo, podría implementar 2 Xibs, un xib para cada orientación. Consulte la respuesta de esta pregunta para obtener una explicación más detallada. ¿La forma más fácil de soportar múltiples orientaciones? ¿Cómo cargo un NIB personalizado cuando la aplicación está en Horizontal?

esto te sirve?

contestado el 23 de mayo de 17 a las 12:05

consulte el siguiente código, también es compatible con la orientación

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CountryCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    //    NSString *continent = [[self.countries allKeys] objectAtIndex:indexPath.row];
    NSString *continent1 = [self tableView:tableView titleForHeaderInSection:indexPath.section];
    NSLog(@"Contine............%@", continent1);
    int k = [[self.countries valueForKey:continent1] count];
    UIScrollView *previewScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.frame.size.width, 250)];
    previewScrollView.backgroundColor = [UIColor clearColor];
    previewScrollView.pagingEnabled = TRUE;
    previewScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [previewScrollView setContentSize:CGSizeMake(250*k, 60.0)];
    previewScrollView.showsHorizontalScrollIndicator = YES;
    NSLog(@"cell.contentView.frame.size.widt  %f",cell.contentView.frame.size.width);
    NSLog(@"K %@   %d",continent1,  k);
    for(int i=0 ; i<k; i++ ){

        imageView.image = [UIImage imageNamed:[[self.countries valueForKey:continent1] objectAtIndex:i]];
        imageView.contentMode = UIViewContentModeCenter;
        [previewScrollView addSubview:imageView];

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(250.0*i, 10, 200, 250);
        NSLog(@"%@", [NSString stringWithFormat:@"%d%d",indexPath.section,i]);
        btn.tag = [[NSString stringWithFormat:@"%d%d",indexPath.section,i] intValue];
        [btn addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchDown];
        [previewScrollView addSubview:btn];
    }

    [[cell contentView] insertSubview:previewScrollView atIndex:0];
    // [cell addSubview:previewScrollView];

}
return cell;
}

contestado el 22 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.