[英]How to pin a UIView underneath the iOS 11 NavigationBar's changing height frame?
[英]How to change navigationBar height in iOS 11?
顯然,更改導航欄高度在 iOS 11 中面臨一種新方法。在以前的 iOS 版本中,可以通過隱藏默認導航欄並添加一個帶有自定義框架的新導航欄來更改導航欄高度:
self.navigationController?.setNavigationBarHidden(true, animated: false)
let customNavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 64))
self.view.addSubview(customNavigationBar)
但它似乎不適用於 iOS 11 xCode beta。 不管新的高度是多少,都會一直保持在44。
這是我在 xCode 9 中得到的:
有誰知道如何解決問題?
在 Apple 修復該錯誤之前,這更像是一種黑客攻擊。 我遇到了同樣的問題,所以我將導航欄的頂部約束從 0 更改為 20。
如果您的 UINavigationBar backgroundColor 不是白色,這將使狀態欄保持白色。 您可以通過在該特定 UIViewController 中添加以下內容來解決此問題。
let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
let statusBarColor = UIColor.red
statusBarView.backgroundColor = statusBarColor
view.addSubview(statusBarView)
這似乎是一個漫長的 hack,但仍然比返回並使用 Xcode 8.3 編譯要好。
我可以讓它工作的唯一方法是刪除當前的自定義導航欄,並將嵌入的 UINavigationController 應用到 UIViewController。 編輯器 -> 嵌入 -> 導航控制器。
在新創建的 Navigation Controller 屬性上,必須在 Utilities(右側欄)菜單“Simulated Metrics”上指定“Top Bar”屬性。 就我而言,我需要這個值:“不透明導航欄”。
我還在 UIViewController 上設置了相同的 'Top Bar' 值,只是為了確保。
通過這樣做,您將可以使用一個新的“導航項”,並且您可以重新添加您的欄按鈕項。
在我們等待 Xcode 9 更新修復它時,這是我能做的最好的事情。
在 iOS 11 中我們無法更改導航欄高度,如果您想增加高度,我們應該使用自定義視圖。
這個答案為我完成了工作。
navigationController.navigationBar.setTitleVerticalPositionAdjustment(CGFloat(10),
forBarMetrics: UIBarMetrics.Default)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.