2013-09-20 2 views
3

Да, я видел много вопросов об этом, но ничего, что касается моей конкретной проблемы.Проблемы с панелью задач iOS 7 с UITabBarController

Мне удалось получить статусную строку, чтобы быть сплошной черной (я бы хотел синий, но я счастлив, что он прочный, непрозрачный). Я совершил это, делая

  1. в MyApp-Info.plist не добавляя 'View контроллер на основе строку состояния внешнего вида' = NO значения
  2. В AppDelegate делает if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { [application setStatusBarStyle:UIStatusBarStyleLightContent]; self.window.clipsToBounds =YES; }
  3. в моем viewDidLoad делает if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) { self.edgesForExtendedLayout = UIRectEdgeNone; }

Отлично.

enter image description here

Но за UITabBarController он по-прежнему прозрачна. Контроллеры представлений внутри моего контроллера tabbar являются подклассами одного и того же контроллера представления в первом снимке экрана. И тот же код viewDidLoad вызывается.

Любые идеи?

enter image description here

+0

Попробуйте установить navigationBarStyle по умолчанию: self.navigationController.navigationBar.barStyle = UIBarStyleDefault; –

+0

Спасибо, Дэвид ... где я должен это делать? В 'viewDidLoad' или в appDelegate? – phil

+0

Я сделал это в viewWillAppear –

ответ

3

После нескольких дней возни у меня есть решение:

1) установить View controller-based status bar вид на NO в MyApp-info.plist (добавить ключ, если вам это нужно)

2) Поместите это в мастер и подробно контроллеры просмотреть viewDidLoad:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack; 
self.navigationController.navigationBar.translucent = NO; 
self.navigationController.navigationBar.barTintColor = [your background colour]; 
self.navigationController.navigationBar.tintColor = [color of the text of buttons]; 

3) Это сделает верхний бар непрозрачным, поэтому в раскадровке, если у вас есть uitabbarcontroller, вам нужно установить на нем under opaque bars.

В бонусной совет: Для того, чтобы панель навигации соответствует его я делаю следующее в AppDelegate didFinishLaunchingWithOptions:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setBackgroundColor:[same color as barTintColor above]]; 
[[UINavigationBar appearance] setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}]; 

Я надеюсь, что это поможет кому-то!

2

Я столкнулся с подобной проблемой. Чтобы исправить это, вам не придется отключить View controller-based status bar

В UITabBarController классе, установленный расширенный макет в UIRectEdgeNone

self.edgesForExtendedLayout = UIRectEdgeNone; 
self.automaticallyAdjustsScrollViewInsets = NO; 

Затем установите navigationBar.barTintColor некоторые где.

установка edgesForExtendedLayout в детском виде контроллер не работает.

Смежные вопросы