2015-06-10 6 views
6

Проблема:Почему UINavigationBar становится черным?

У меня есть UITableViewController встроенный в UINavigationController. Нажатие ячейки в представлении таблицы переключается на другой контроллер табличного представления. В указанном контроллере табличные, я хотел бы, чтобы панель навигации, чтобы быть невидимой, все еще держа панель вкладок элементов, поэтому я добавил следующее к его viewDidLoad():

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
     self.navigationController?.navigationBar.shadowImage = UIImage() 
     self.navigationController?.navigationBar.translucent = true 
     self.navigationController?.navigationBar.tintColor = .blackColor() 

Для первого UITableViewController, я бы хотел, панель навигации, чтобы быть нормальным, так в viewDidAppear() я сделал следующее:

self.navigationController?.navigationBar.translucent = false 

Все работает отлично, за исключением во время переходного периода (который я делаю через performSegueWithIdentifier) панель навигации на первом контроллере представления исчезает в черноту, который выглядит быть честным. Есть ли способ предотвратить/исправить это?

Скриншот: enter image description here

+0

Вы когда-нибудь находили ответ на этот вопрос? –

+0

nope @Inturbidus – cyril

ответ

0

Вы можете оживить полупрозрачность панели навигации. Таким образом, в viewDidLoad для вашей второй UITableViewController, вы можете написать следующее:

override func viewDidLoad() { 
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
    self.navigationController?.navigationBar.shadowImage = UIImage() 
    self.navigationController?.navigationBar.tintColor = .blackColor() 

    // Play around with the duration until you find 
    // a time interval, you find suitable 
    UIView.animateWithDuration(2) { 
     self.navigationController?.navigationBar.translucent = true 
    } 
} 
+0

Я пробовал это, но баланс между навигационной панелью довольно быстро исчезает, и появляется черная часть. Я пытаюсь думать об обходном пути – cyril

+0

Что вы подразумеваете под балансом? Потому что, когда я запускаю фрагмент кода выше в симуляторе, он выглядит неплохо. Не могли бы вы сделать небольшую запись QuickTime о том, как она выглядит с анимацией прозрачности? – Kumuluzz

+0

Какую скорость вы используете? И, к сожалению, я не могу, потому что этот проект для клиента. Во всяком случае, я пытаюсь сказать, что слишком медленная скорость приводит к тому, что навигационная панель все еще временно отображается во втором контроллере представления, а два быстрых выхода на черную часть появляются. Если вы хотите узнать, что я пытаюсь проверить, посмотрите музыкальное приложение в iOS 8.4 или iOS 9, когда вы просматриваете альбом с его песнями. – cyril

2

У меня была очень похожая проблема в последнее время. Попробуйте установить self.navigationController?.navigationBar.translucent = true в обоих контроллерах и self.edgesForExtendedLayout = UIRectEdgeNone.
Раскадранная версия: Extended Edges - Under Top Bars

+1

Настройка self.edgesForExtendedLayout = UIRectEdge. Никто не работал на меня! Благодаря! –

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