Ответ 1
Проблема заключалась в том, что я звонил
self.navigationController.navigationBar.translucent = NO;
после моего представления. Я переместил этот код в свой метод viewWillAppear, и теперь он выглядит правильно:
Это приложение, которое я конвертирую с 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 хочу полупрозрачный навигатор. Это происходит только тогда, когда я получаю несколько слоев в глубину, что я хочу иметь непрозрачную панель (этот вид не имеет прокручиваемых данных, поэтому не имеет смысла иметь его полупрозрачным).
Вот скриншот того, что я вижу в панели навигации:
Проблема заключалась в том, что я звонил
self.navigationController.navigationBar.translucent = NO;
после моего представления. Я переместил этот код в свой метод viewWillAppear, и теперь он выглядит правильно:
Вы можете попробовать под кодом...
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;
И добавьте этот код в View viewDidLayoutSubviews function...
Вы можете установить его через плату с помощью приложения, используя это:
UINavigationBar.appearance().navigationBarAppearace.translucent = false
Я обычно делаю это в своем классе AppDelegate, когда приложение изначально загружается.
все, что вам нужно сделать для iOS6, - это установить контроллер fullscreenlayout в NO, а затем PUSH его на ваш навигационный контроллер
[controller setWantsFullScreenLayout:NO];