2016-06-22 4 views
0

У меня есть UINavigationController с 3 viewControllers. Мы знаем, что три viewControllers имеют общую навигационную панель. Если я хочу установить navigationBar полностью прозрачным. Я могу поставить код в viewWillAppear:Показать прозрачный UINavigationbar будет видеть черную полосу при прокрутке viewController

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
[self.navigationBar setShadowImage:[UIImage new]]; 
[self.navigationBar setBarTintColor:[UIColor clearColor]]; 
    self.navigationBar.translucent = YES; 

и установить его обратно в viewWillDisappear:

[self setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
[self setShadowImage:nil]; 
[self setBarTintColor:THEME_COLOR]; 
self.translucent = NO; 

Я хочу, чтобы установить UINavigationBar полупрозрачным только в viewControllerB, поэтому я положил код в viewControllerB. Однако, когда я popToViewController B, я вижу черную полосу в правом верхнем углу экрана. Поскольку используется viewWillAppear. Кажется, это не может быть решено в моем случае.

Выхожу с некоторыми методами:

  1. использовать разные UINavigationBar.
  2. использование другой UINavigationController. Но UINavigationController не может нажать на новый UINavigationController
  3. Таможня UIView как UINavigationBar.

Я думаю, что выше Митос сложнее.

Всех идей спасибо!

+0

Поместите свой код 'ViewControllerB' и' ViewControllerC' –

+0

Я не понимаю, о чем вы говорите: «Так как' viewWillAppear' вызывается, похоже, в моем случае не может быть разрешено ».? Можете ли вы повторить это по-другому? И можете ли вы добавить изображение черной полосы в правом верхнем углу экрана? Кажется странным, что вы не увидите планку по всей верхней части экрана. – Palpatim

ответ

0

Этот черный цвет, который вы видите, является цветом фона главного окна. Вы можете установить фоновое изображение или цвет в главное окно из метода AppDelegate didFinishLaunchingWithOptions (это полностью зависит от вашего дизайна контроллера B), чтобы вы не увидели никакой разницы.

Или

Просто вы можете использовать viewDidAppear вместо использования viewWillAppear, но это будет иметь мало Флик, хотя.

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