ich benutzerdefinierte Navigationsleiste Höhe realisiert, durch Subklassen es mit dem Code folgendeniOS 10 benutzerdefinierte Navigationsleiste Höhe
class TMNavigationBar: UINavigationBar {
///The height you want your navigation bar to be of
static let navigationBarHeight: CGFloat = 44.0
///The difference between new height and default height
static let heightIncrease:CGFloat = navigationBarHeight - 44
override init(frame: CGRect) {
super.init(frame: frame)
initialize()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialize()
}
private func initialize() {
let shift = TMNavigationBar.heightIncrease/2
///Transform all view to shift upward for [shift] point
self.transform =
CGAffineTransformMakeTranslation(0, -shift)
}
override func layoutSubviews() {
super.layoutSubviews()
let shift = TMNavigationBar.heightIncrease/2
///Move the background down for [shift] point
let classNamesToReposition: [String] = ["_UINavigationBarBackground"]
for view: UIView in self.subviews {
if classNamesToReposition.contains(NSStringFromClass(view.dynamicType)) {
let bounds: CGRect = self.bounds
var frame: CGRect = view.frame
frame.origin.y = bounds.origin.y + shift - 20.0
frame.size.height = bounds.size.height + 20.0
view.frame = frame
}
}
}
override func sizeThatFits(size: CGSize) -> CGSize {
let amendedSize:CGSize = super.sizeThatFits(size)
let newSize:CGSize = CGSizeMake(amendedSize.width, TMNavigationBar.navigationBarHeight);
return newSize;
}
}
Problem Nach tritt nur auf iOS-10: (schwarzer Raum zwischen Bar & Ansicht)
Keine Ahnung, was dort passiert. Aber im Storyboard wird diese Warnung generiert, und es gibt keine Möglichkeit, sie in IB zu beheben (Warnung erscheint nur, wenn ich die Unterklasse der Navigationsleiste in IB ändere).
Die Storyboard Warnung ist über die Breite, nicht Höhe. Und es hat nichts mit deinem Code zu tun. - Was ist das Problem_? Du sagst "folgendes Problem", aber du sagst nie, was es ist. – matt
Bitte aktualisierten Screenshot sehen, es zeigt schwarzen Raum zwischen Ansicht & navBar – ignotusverum
Also, was verursacht den schwarzen Raum? Ist der untere Rand der Navigationsleiste zu hoch oder ist der obere Teil der Ansicht zu niedrig? Sie haben einen Debugger. Debuggen! Verwenden Sie in diesem Fall den View Debugger, um zu sehen, wie Ihre View-Frames aussehen. – matt