2015-03-10 5 views
7

Я столкнулся с проблемой со строками состояния & навигация. По умолчанию панель навигации UINavigationController выходит за панель состояния и раскрашивает ее (левый снимок экрана).Fake Status Bar Цвет при скрытой панели навигации

Когда панель поиска используется, я скрываю панель навигации. Это приводит к неокрашенной строке состояния. Приложение Apple Mail не имеет этой проблемы.

Есть ли какое-либо другое решение, кроме создания отдельного UIView с цветом фона и помещением его в строку состояния?

Image that shows hidden and not-hidden navigation bar, and how this affects the status bar color

Вот что я хотел бы выполнить:

enter image description here

+1

исследований 'UIBarPositioningDelegate' – Desdenova

+0

Благодаря @Desdenova предложению, я нашел http://stackoverflow.com/a/18897105/3512120, что решить мою проблему, и, вероятно, ваш Aswell. – joels

ответ

0

Когда вы скрыть Панель навигации, почему не вы также обновить внешний вид вашего UIStatusBar.

Реализовать эту функцию в NavigationController:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    //Have an if statement to determine which UIStatusBarStyle to return, i.e if the navigationBar is hidden 
    return UIStatusBarStyleLightContent; 
} 

И называют это когда вы скрыть панель навигации с помощью этого:

[self setNeedsStatusBarAppearanceUpdate]; 

Другой вариант, чтобы сделать последующие:

Установите UIViewControllerBasedStatusBarAppearance в НЕТ в файле info pList. Тогда вы можете позвонить

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
0

В вашем IB (или Programatically), попытайтесь проверить смоделированные метрики для верхней панели: вы должны установить его от непрозрачного до прозрачного (панель навигации).

Примечание: По умолчанию навигационная панель является полупрозрачной. Вы должны получить «цветную» ** строку состояния для бесплатно.

**, как это определено UISearchBar.appearance().barTintColor

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