Próbuję zmienić tło paska nawigacyjnego, tworząc warstwę i dodając ją jako podwarstwę do paska nawigacji. Ma to jednak wpływ tylko na pasek nawigacji.Ustawianie gradientu zarówno na pasku nawigacyjnym, jak i na pasku stanu
ja wa ona mieć wpływ na całą górną część ekranu. Kod zawiera:
let navBarLayer = StyleUtils.createGradientLayerWithColors(color: StyleUtils.Colors.SKY_BLUE, frame: (self.navigationController?.navigationBar.bounds)!)
self.navigationController?.navigationBar.layer.addSublayer(navBarLayer)
createGradientLayerWithColors funkcja zwraca CAGradientLayer dla danej ramki.
Czego mi brakuje? Z góry dziękuję.
EDIT:
Próbowałem Nathaniel odpowiedź, ale mam to:
Warto wspomnieć, że jest to również Tableview.
ROZWIĄZANIE:
Znalazłem to question że pomógł mi rozwiązać problem.
Ostateczna poprawny kod jest:
func setNavBarColor() {
let navBar = self.navigationController?.navigationBar
//Make navigation bar transparent
navBar?.setBackgroundImage(UIImage(), for: .default)
navBar?.shadowImage = UIImage()
navBar?.isTranslucent = true
//Create View behind navigation bar and add gradient
let behindView = UIView(frame: CGRect(x: 0, y:0, width: UIApplication.shared.statusBarFrame.width, height: UIApplication.shared.statusBarFrame.height + (navBar?.frame.height)!))
let layerTop = StyleUtils.createGradientLayerWithColors(color: StyleUtils.Colors.SKY_BLUE, frame: behindView.bounds)
behindView.layer.insertSublayer(layerTop, at: 0)
self.navigationController?.view.insertSubview(behindView, belowSubview: navBar!)
}
Umieszczam tę metodę w rozszerzeniu UINavigationController, nazywam ją initializeNavBarStyle i działa naprawdę dobrze! – LargeGlasses