Привет, Я разрабатываю небольшое приложение Iphone, в котором я даю цвет для моей панели навигации, как это
[self.navigationController.navigationBar setTranslucent:NO];
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];
Но из-за этого моя строка состояния также становится красного цвета. Я хочу изменить его на белый. Я старался, но это не работает для меня.
в файле info.plist я устанавливаю View controller-based status bar appearance = "NO"
затем в application:didFinishLaunchingWithOptions:
установить [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Затем в UIViewcontroller
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Но выше методы не работают для меня. Моя панель навигации и строка состояния того же цвета. Я хочу сделать цвет строки состояния белым. Мое приложение очень просто с одним контроллером UIView с одним контроллером навигации. Я делаю что-то неправильно? Нужна помощь. Спасибо.
UIStatusBarStyleLightContent
сообщает строке состояния отображать светлый текст, но он все еще прозрачен. И поскольку контроллер навигации сообщает, что позиция его навигационной панели является UIBarPositionTopAttached
, вы видите эффект растяжения UIBarPositionTopAttached
панели навигации под строкой состояния.
Вот две идеи, как добиться того, что вы ищете:
Подкласс навигационного контроллера, реализация - (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
и возврат UIBarPositionTop
.Это приведет к тому, что панель навигации не будет растягиваться под строкой состояния, и вместо этого отобразится надзор панели навигации (обычно белый).
Или, лучше, подклассифицируйте навигационный контроллер, добавьте subview высотой 20pt над навигационной панелью и в viewDidLayoutSubviews
, расположите и измените размер подвью правильно на ориентацию. Теперь вы можете указать любой цвет, который вы хотели бы видеть, и это будет цвет строки состояния.
Изменить. Исходя из комментариев, подход positionForBar:
может не работать.