UINavigationBar, являющийся полупрозрачным, вместо непрозрачного белого

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

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

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

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

self.navigationController.navigationBar.translucent = NO;

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

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

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

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

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

Ответ 1

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

self.navigationController.navigationBar.translucent = NO;

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

Correct

Ответ 2

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

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

И добавьте этот код в View viewDidLayoutSubviews function...

Ответ 3

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

UINavigationBar.appearance().navigationBarAppearace.translucent = false

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

Ответ 4

все, что вам нужно сделать для iOS6, - это установить контроллер fullscreenlayout в NO, а затем PUSH его на ваш навигационный контроллер

[controller setWantsFullScreenLayout:NO];