2012-05-22 3 views
2

Мне нужно обрабатывать ориентацию (портрет - пейзаж) в моем приложении. Основным расположением моего экрана является UIView -> UIImageView -> UITableView (Background = ClearColor) (в этом z-порядке), так что это выглядит так, что в таблице есть фоновое изображение.Обработка ориентации в интерфейсе Builder

мне нужно сделать следующее:

  • Различные изображения в UIImageView в обоих режимах.
  • Каждая ячейка в таблице должна иметь 3/4 изображения, выложенные бок о бок (3 в портрете и 4 в ландшафте).

Все это должно быть выполнено в построителе интерфейса (в максимально возможной степени).

То, что я пытался до сих пор:

  • IB дает вам возможность ориентации для просмотра. Но я не мог найти способ установить разные изображения для каждой ориентации.
  • После иерархии, где я получаю 2 отдельных VC (с двумя отдельными NIB) из одного базового класса. Единственная проблема - это сборка Universal, поэтому мне придется делать это для каждого вида в iPad и iPhone.

Есть ли другой лучший метод? Если нет, второй вариант лучше? Любые проблемы с этим подходом?

ответ

0

То, что вы пытаетесь достичь добавляет различные точки зрения, основываясь на ориентации в XIb, Короткий ответ в том, что вы не можете,

Однако можно реализовать 2 Xibs, один XIB для каждой ориентации Пожалуйста, обратитесь к ответу этого вопроса для дальнейшего разъяснения Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?

это делает это за вас?

+0

Спасибо большое, ребята :) – ameyazing

0

пожалуйста, проверьте код ниже он поддерживает также ориентацию

- (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; 
} 
Смежные вопросы