I want to set some shadow to the bottom of my UINavigationBar for the whole application. Here is what I\'ve tried but it doesn\'t work:
func application(appl
Easy, works on Swift 3:
navigationController?.navigationBar.layer.shadowColor = UIColor.black.cgColor
navigationController?.navigationBar.layer.shadowOpacity = 1
navigationController?.navigationBar.layer.shadowOffset = CGSize.zero
navigationController?.navigationBar.layer.shadowRadius = 10
A better solution by still using appearance and that does not require you to subclass the UINavigationBar and adding code to each navigation controller, would be:
Extend the UINavigationBar
extension UINavigationBar {
var castShadow : String {
get { return "anything fake" }
set {
self.layer.shadowOffset = CGSizeMake(0, 3)
self.layer.shadowRadius = 3.0
self.layer.shadowColor = UIColor.yellowColor().CGColor
self.layer.shadowOpacity = 0.7
}
}
}
And add an app wide appearance rule (inside appdelegate "didFinishLaunchingWithOptions" for example)
UINavigationBar.appearance().castShadow = ""