[英]Get the default height (or maxY) of a NavigationBar on iOS
我想知道有沒有什么辦法讓我們獲得默認的導航欄height
( maxY
最好)一個的NavigationController
。
知道iOS 11引入了大標題,那么我們有什么辦法獲取帶有“小標題”的導航欄和帶有“大標題”的導航欄的默認height
(或maxY
)?
我之所以這樣問,是因為我要使導航欄的背景透明,並向其介紹我自己的背景(即效果視圖)。 但是我遇到的問題是每次我運行以下代碼
self.navigationController?.navigationBar.frame.maxY
它返回的數字比預期的要高:/
我試圖在許多回調上運行這段代碼-> onViewWillAppear
, onViewDidAppear
, onViewDidLoad
您可以使用此獲取導航欄和狀態欄的高度
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let topSpace:CGFloat?
if #available(iOS 11.0, *) {
topSpace = self.view.safeAreaInsets.top
} else {
topSpace = self.topLayoutGuide.length
}
print(topSpace)
}
我已經使用本機方法來獲取包括狀態欄在內的導航欄的高度。 使用此行代碼獲取導航欄的高度,並根據需要進行使用。 這對我來說在所有設備和不同的iOS版本上都很好。
let navigationBarHeight = UIApplication.shared.statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)
這對我有用
let navigationBarHeight = UIApplication.shared.statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)
即使是艱難的方法也可能是最適合您的解決方案,我通常會嘗試不使用本機導航欄,而是將其隱藏並創建自己的導航欄。 這使得在應用程序中更容易使用自定義和更高級的設計。
到目前為止,我發現的最佳方法是無需創建導航控制器實例:
[self.navigationBar sizeThatFits:CGSizeZero].height;
而且,它還支持屏幕方向更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.