Почему мой UITabBar смещается на 20 пикселей при загрузке в портретной ориентации? - PullRequest
1 голос
/ 15 февраля 2011

Я загружаю UITabBarController внутри UINavigationController. По умолчанию UITabBar для UITabBarController размещает его в нижней части представления. При использовании параметра по умолчанию панель отображается правильно в нижней позиции при запуске приложения в альбомной ориентации.

enter image description here

Это также обеспечивает правильное отображение портрета внизу (но только когда приложение запускается в ландшафтном режиме). enter image description here

Если я запускаю приложение в портретном режиме, оно кажется смещенным вниз по высоте строки состояния в обоих альбомах: enter image description here

и портрет: enter image description here

Я пытаюсь создать эффект, аналогичный приложению CNBC, и отображать UITabBar в верхней части представления. После рассмотрения вопроса Михая Дамиана я попытался настроить UITabBar.

Я просто добавил пару строк кода:

-(void)loadView{
    UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    contentView.backgroundColor = [UIColor clearColor];
    self.view = contentView;
    [contentView release];

    orderingTabBarController = [[UITabBarController alloc] init];
    OrderingSpecialsViewController *specialsViewController = [[OrderingSpecialsViewController alloc] initWithNibName:@"OrderingSpecialsViewController" bundle:nil];
    OrderingProductViewTabBarController *productViewTabBarController = [[OrderingProductViewTabBarController alloc] init];
    OrderingSummaryViewController *summaryViewController = [[OrderingSummaryViewController alloc] init];

    specialsViewController.title = @"SPECIALS";
    productViewTabBarController.title = @"PRODUCT";
    summaryViewController.title = @"ORDER SUMMARY";

    [orderingTabBarController setViewControllers:[NSArray arrayWithObjects:specialsViewController, productViewTabBarController, summaryViewController, nil] animated:YES];
    orderingTabBarController.tabBar.frame = CGRectMake(0.0, 110.0, self.view.frame.size.width, 40.0);

    [specialsViewController release];
    [productViewTabBarController release];
    [summaryViewController release];

    [self.view addSubview:orderingTabBarController.view];
}

Когда я пытаюсь изменить кадр UITabBar, он исчезает в ландшафтном режиме: enter image description here

и появляется на разной высоте на портрете, когда он снова инициируется в альбомной и портретной ориентации соответственно.

Инициируется в ландшафтном режиме: enter image description here

Инициируется в портретном режиме: enter image description here

Кто-нибудь сталкивался с этой проблемой раньше? Если да, то как вы решили эту проблему? Любая помощь здесь будет принята с благодарностью.

Просто кажется, что добавляется 20 пикселей строки состояния, когда представление загружается в портретном режиме, как если бы оно не находило строку состояния, даже если оно там есть, следовательно, оно добавляет 20 пикселей поверх уже существующие 20 пикселей для строки состояния.

1 Ответ

2 голосов
/ 07 марта 2011

Я действительно исправил это через IB. Контроллер представления по какой-то причине хочет добавить строку состояния, все, что вам нужно сделать, это установить ее в IB на ноль и проверить, что размер представления изменяется. Кроме того, убедитесь, что размеры вашего обзора установлены на 768 x 1024.

...