2013-09-25 2 views
10

Это приложение, которое я конвертирую с iOS 6. Первоначально ViewController показывался под iOS 7 с содержимым основного представления под панелью навигации.UINavigationBar, являющийся полупрозрачным, вместо непрозрачного белого

В представлении построителя пользовательского интерфейса, я отключил «Under Top Bars» и «Under Bottom Bars» в разделе «Extend Edges», чтобы решить эту проблему. Однако это сработало, теперь на этом экране панель навигации выглядит полупрозрачной (на скриншоте ниже изображена серая).

Я пробовал явно устанавливать «Верхнюю панель» на «Непрозрачную навигационную панель» в разделе «Имитированные показатели», но это не имеет никакого эффекта.

Я пробовал настройки:

self.navigationController.navigationBar.translucent = NO; 

в моем коде инициализации ViewController, но это также не имеет никакого эффекта.

Что мне не хватает?

UPDATE: Если я установил self.navigationController.navigationBar.translucent = NO; в свой первый ViewController в стеке, он работает. Тем не менее, до рассматриваемого ViewController, я do хочу полупрозрачный navbar. Только когда я дойду до нескольких слоев, я хочу иметь непрозрачную панель (этот вид не имеет прокручиваемых данных, поэтому нет смысла иметь его полупрозрачный).

Вот скриншот того, что я вижу в панели навигации:

Attempt to make bar white opaque have failed thus far in iOS 7...

+0

http://stackoverflow.com/questions/18929864/how-do-i-change-the-navigation-bar-color-in-ios-7/18929980#18929980 – Rajneesh071

ответ

19

Проблема в том, что я звонил

self.navigationController.navigationBar.translucent = NO; 

после появления на мой взгляд. Я переехал этот код в мой метод viewWillAppear, и теперь отображается правильно:

Correct

+1

Вызов его на '-viewDidLoad:' кажется работать тоже. –

0

все, что вам нужно сделать для iOS6, чтобы установить fullscreenlayout контроллера на NO, а затем жми его к NavigationController

[controller setWantsFullScreenLayout:NO]; 
4

Вы можете попробовать ниже код ...

self.navigationController.navigationBar.barTintColor = [UIColor redColor]; 
self.navigationController.navigationBar.translucent = NO; 

И Добавьте этот код в функции Посмотреть viewDidLayoutSubviews ...

4

Вы можете установить его через борт с приложением с помощью этого:

UINavigationBar.appearance().navigationBarAppearace.translucent = false 

Я, как правило, сделать это в моем классе AppDelegate, когда приложение первоначально загружает.

+0

Я верю, что это было изменено только на 'UINavigationBar.appearance(). Translucent = false' now – FortuneFaded

+0

Он был далее изменен на' isTranslucent' в Swift 3. –

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