Я загружаю UITabBarController
внутри UINavigationController
. По умолчанию UITabBar
для UITabBarController
размещает его в нижней части представления. При использовании параметра по умолчанию панель отображается правильно в нижней позиции при запуске приложения в альбомной ориентации.
Это также обеспечивает правильное отображение портрета внизу (но только когда приложение запускается в ландшафтном режиме).
Если я запускаю приложение в портретном режиме, оно кажется смещенным вниз по высоте строки состояния в обоих альбомах:
и портрет:
Я пытаюсь создать эффект, аналогичный приложению 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, он исчезает в ландшафтном режиме:
и появляется на разной высоте на портрете, когда он снова инициируется в альбомной и портретной ориентации соответственно.
Инициируется в ландшафтном режиме:
Инициируется в портретном режиме:
Кто-нибудь сталкивался с этой проблемой раньше? Если да, то как вы решили эту проблему? Любая помощь здесь будет принята с благодарностью.
Просто кажется, что добавляется 20 пикселей строки состояния, когда представление загружается в портретном режиме, как если бы оно не находило строку состояния, даже если оно там есть, следовательно, оно добавляет 20 пикселей поверх уже существующие 20 пикселей для строки состояния.