Ich verwende eine UINavigationBar-Erweiterung, die es mir ermöglicht, diesen Schatten unter Verwendung der UIAppearance-API auszublenden/einzublenden oder auszuwählen, welcher Navigationsleiste über Storyboard (oder Quellcode) diesen Schatten ausblenden/einblenden soll. Hier ist die Erweiterung:
import UIKit
private var flatAssociatedObjectKey: UInt8 = 0
/*
Eine Erweiterung, die ein Feld "flat" zur UINavigationBar hinzufügt. Dieses Flag entfernt den Schatten unter der Navigationsleiste, wenn es aktiviert ist.
*/
@IBDesignable extension UINavigationBar {
@IBInspectable var flat: Bool {
get {
guard let obj = objc_getAssociatedObject(self, &flatAssociatedObjectKey) as? NSNumber else {
return false
}
return obj.boolValue;
}
set {
if (newValue) {
let void = UIImage()
setBackgroundImage(void, forBarPosition: .Any, barMetrics: .Default)
shadowImage = void
} else {
setBackgroundImage(nil, forBarPosition: .Any, barMetrics: .Default)
shadowImage = nil
}
objc_setAssociatedObject(self, &flatAssociatedObjectKey, NSNumber(bool: newValue),
objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
Um den Schatten über alle Navigationsleisten hinweg auszublenden, muss Folgendes verwendet werden:
UINavigationBar.appearance().flat = true
Oder Sie können dieses Verhalten über Storyboards aktivieren/deaktivieren:
![Navigation Bar Storyboard]()