2015-06-10 22 views
6

Problem:Dlaczego pasek UINavigationBar zmienia kolor na czarny?

Mam UITableViewController osadzony w UINavigationController. Naciśnięcie komórki w widoku tabeli przełącza do innego kontrolera widoku tabeli. We wspomnianym kontrolerze widoku tabeli, chciałbym na pasku nawigacyjnym, aby być niewidoczne zachowując elementy paska kart więc dodałem następujące do jego viewDidLoad():

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

Dla pierwszego UITableViewController, którą lubię pasek nawigacyjny być normalne, więc w jego viewDidAppear() zrobiłem następujące:

self.navigationController?.navigationBar.translucent = false 

Wszystko działa poprawnie z wyjątkiem okresu przejściowego (który robię poprzez performSegueWithIdentifier) pasek nawigacyjny na pierwszym kontrolerze widoku znika w ciemności, która wygląda brzydki, szczerze mówiąc. Czy jest jakiś sposób, aby temu zapobiec?

Zrzut ekranu: enter image description here

+0

Czy kiedykolwiek znalazłeś odpowiedź na to pytanie? –

+0

nope @Inturbidus – cyril

Odpowiedz

0

można animować przezroczystość paska nawigacyjnego. Więc w viewDidLoad za drugą UITableViewController, można napisać następujące:

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

Próbowałem tego, ale nie ma równowagi między paskiem nawigacji znikającym wystarczająco szybko a pojawiającą się czarną częścią. Próbuję wymyślić obejście: – cyril

+0

Co masz na myśli przez równowagę? Ponieważ kiedy używam fragmentu kodu powyżej w symulatorze, wygląda on całkiem dobrze. Czy możesz zrobić małe nagranie QuickTime, jak to wygląda z animacją przezroczystości? – Kumuluzz

+0

Jakiej prędkości używasz? I niestety nie mogę, ponieważ ten projekt jest dla klienta. W każdym razie próbuję powiedzieć, że zbyt wolna prędkość prowadzi do tego, że pasek nawigacyjny jest chwilowo widoczny w drugim kontrolerem widoku, a dwa szybkie przewody prowadzą do czarnej części. Jeśli chcesz wiedzieć, co próbuję osiągnąć, sprawdź aplikację muzyczną w iOS 8.4 lub iOS 9, sprawdzając album ze swoimi utworami. – cyril

2

miałem bardzo podobny problem niedawno. Spróbuj ustawić self.navigationController?.navigationBar.translucent = true w obu kontrolerach widoku i self.edgesForExtendedLayout = UIRectEdgeNone.
Wersja scenorysowa: Extended Edges - Under Top Bars

+1

Ustawienie self.edgesForExtendedLayout = UIRectEdge.None pracował dla mnie! Dzięki! –

Powiązane problemy