tôi thực hiện tùy chỉnh chiều cao thanh điều hướng, bởi subclassing nó với mã sau đâyiOS 10 tùy chỉnh chiều cao thanh điều hướng
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;
}
}
Tiếp theo vấn đề chỉ xảy ra trên iOS 10: (không gian đen giữa thanh & xem)
Không biết điều gì đang xảy ra ở đó. Nhưng trong storyboard nó tạo ra cảnh báo này, và không có cách nào để sửa chữa nó trong IB (cảnh báo chỉ xuất hiện khi tôi thay đổi phân lớp của thanh điều hướng trong IB).
Cảnh báo storyboard là về chiều rộng, chiều cao không. Và nó không có gì để làm với mã của bạn. - _problem_ là gì? Bạn nói "vấn đề sau" nhưng bạn không bao giờ nói những gì nó _is_. – matt
Vui lòng xem ảnh chụp màn hình được cập nhật, nó hiển thị không gian màu đen giữa chế độ xem & navBar – ignotusverum
Vậy điều gì gây ra không gian màu đen? Phần dưới cùng của thanh điều hướng có quá cao hay là đầu của chế độ xem quá thấp? Bạn có một trình gỡ lỗi. Gỡ lỗi! Trong trường hợp này, hãy sử dụng trình gỡ lỗi Xem để _see_ khung xem của bạn là gì. – matt