控制器显示以下代码:
let vc = UIViewController()
vc.view.backgroundColor = Colors.green
let nvc = UINavigationController(rootViewController: vc)
self.present(nvc, animated: true, completion: nil)
它显示
但是导航栏的高度很大。应该是这样
如何像第二张图片一样显示导航栏的高度?
答案 0 :(得分:0)
当堆栈不太深时,导航栏实际上是正确的大小(至少对于iOS 13标准而言)。对于在索引2(及以后的位置)显示的视图,导航栏会变小
要调整导航栏的大小,请执行以下两个步骤:
获取默认的高度限制(名称为"UI-View-Encapsulated-Layout-Height"
)。为此,请在导航栏的约束中搜索。我在下面无耻地复制了Isaih Turner's solution,这使它变得更容易。
extension UIView {
/// Returns the first constraint with the given identifier, if available.
///
/// - Parameter identifier: The constraint identifier.
func constraintWithIdentifier(_ identifier: String) -> NSLayoutConstraint? {
return self.constraints.first { $0.identifier == identifier }
}
}
将常数设置为所需值。
let existingConstraint = self.navigationController?.navigationBar.constraintWithIdentifier("UIView-Encapsulated-Layout-Height")
existingConstraint?.constant = 88.0
self.navigationController?.navigationBar.setNeedsLayout()
您完成了。