Tạo chủng loại và trọng sizeTha tFits (_ size: CGSize) -> CGSize thay đổi phương thức Kích thước của UINavigationBar trên toàn bộ ứng dụng. Giả sử bạn muốn thay đổi chiều cao/kích thước UINavigationBar chỉ trong một ViewController cụ thể (trong trường hợp của tôi)
Đây là cách tôi đã làm.
extension UINavigationBar {
open override func sizeThatFits(_ size: CGSize) -> CGSize {
let v = self.value(forKey: "frame") as? CGRect
return v?.size ?? CGSize(width: UIScreen.main.bounds.width, height: 44)
}
}
trong người gọi ViewController sẽ trông như thế
override func viewDidLoad() {
super.viewDidLoad()
configureNavigationBar()
}
private func configureNavigationBar() {
var naviBarFrame = self.navigationController?.navigationBar.frame
naviBarFrame?.size.height = 74
let rect = naviBarFrame ?? CGRect(x: 0, y: 20, width: UIScreen.main.bounds.width, height: 74)
self.navigationController?.navigationBar.setValue(rect, forKey: "frame")
}
Nguồn
2017-03-03 14:55:37
Đây là bản sao của câu hỏi này: http://stackoverflow.com/questions/892905/change-iphone-navigation-bars-height. –
frame.size. ** width **? –