class ObservingLargeTitleNavigationBar: UINavigationBar {
override func layoutSubviews() {
super.layoutSubviews()
updateLargeTitle()
}
private func updateLargeTitle() {
if #available(iOS 11.0, *) {
if frame.height >= 44 {
// code logic when large title is visible
} else {
// code logic when large title is hidden
}
}
}
}
3 回答
它可以通过scrollViewDidScroll func获取UINavigationBar的当前高度来完成 .
Piyush Hirpara答案(关于性能)的一个小改进是子类化您的navigationBar并且仅在
layoutSubviews
上更新:请注意,在某些情况下可能需要调整
frame.height
的44
的值 . 我在60
有它,例如我在iPhone X上的配置 .我在UIViewController的子类的ViewWillAppear中添加了这个观察者 . 并根据其高度设置颜色如下:
在ViewWillAppear中:
在viewWillDisappear中:
}