Как я могу изменить высоту панели навигации - Swift 3
Я почти уверен, что это не дубликат, потому что я посмотрел на другие ответы, и все они устарели и не дают точного ответа.
У меня есть контроллер навигации и несколько контроллеров представления. Я хочу сделать панель навигации немного выше, чтобы она соответствовала нужному мне размеру текста. Как я могу это сделать?
Я попробовал это:
UINavigationBar.appearance().frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 210.0)
но ничего не происходит...
Кроме того, я не смог добавить какие-либо ограничения на панель навигации с помощью кнопок макета Xcode.
Надеюсь, кто-нибудь может помочь мне решить эту проблему. Заранее спасибо!
![enter image description here]()
Ответы
Ответ 1
Вот один из способов сделать это:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let height: CGFloat = 50 //whatever height you want to add to the existing height
let bounds = self.navigationController!.navigationBar.bounds
self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height)
}
Ответ 2
Вы можете написать этот код в классе, который расширяет UINavigationController
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let height = CGFloat(72)
navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
}
Ответ 3
Вы можете создать класс на основе UINavigationBar
, как этот
class TTNavigationBar: UINavigationBar {
override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: 55)
}
}
И добавьте его в свой навигационный контроллер.
Ответ 4
Это может быть лучше, если все навигационные панели в вашем приложении имеют одинаковую регулировку высоты.
extension UINavigationBar {
open override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: 51)
}
}
Ответ 5
вы можете нарисовать панель навигации от xib (с вашей высотой), а затем:
self.navigationController?.navigationBar.addSubview(yourNavBarView)
в альтернативном варианте, если вы хотите создать UIView из кода,
let viewNavBar = UIView(frame: CGRect(
origin: CGPoint(x: 0, y:0),
size: CGSize(width: self.view.frame.size.width, height: 100)))
а затем добавление в панель навигации.