[英]iOS Toolbar Height Depends on Initial Orientation
我在iPhone底部的UIToolbar上遇到了一些麻煩。 當我導航到場景時,條形的高度似乎取決於設備的方向,而當方向改變時,條形的高度不會更新。
最初,這並不是真正的問題-用戶甚至都不會注意到這個小小的變化。 但是現在我在拆分視圖中使用底部的欄。 最初以縱向打開時,底部工具欄的高度為44。將手機變為橫向時,將打開帶有自己的工具欄(高49)的詳細視圖。 然后,我有兩個高度不同的工具欄彼此相鄰,這非常丑陋:
所以問題是我如何確保工具欄的高度在方向更改時更新,或者高度始終相同(例如在電子郵件應用程序中)。 我不想硬編碼高度,以免最終會在將來的iOS版本或其他設備上使情況變得更糟。
我正在使用Xcode 10.1,並在具有iOS 12.1.2的iPhone上運行該應用程序。
您是將工具欄手動添加到視圖上,還是使用navigationController管理工具欄? 我假設您這樣做了,因為旋轉時高度沒有變化。
導航控制器在旋轉時管理工具欄的高度。 將以下內容添加到viewDidLoad()方法將顯示navigationController的工具欄。
navigationController?.setToolbarHidden(false, animated: false)
與您的視圖控制器管理工具欄相比,此方法所需的代碼少(少一種方法,少一種出口)。
這是我用來檢查工具欄是否在iPad和iPhone Max型號上正確顯示的默認模板: https : //github.com/joelesli/TBHeight/
我最初通過重寫viewWillTransition(...)
來重繪工具欄並假定每個方向的默認尺寸來解決它(基於上面的Mocha注釋)。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if let bBar = bottomBar { bBar.invalidateIntrinsicContentSize() }
}
這樣一來,它就可以適應將來的UI更改,並且我不冒險在應用程序審批中遇到麻煩(如果修改標准UI元素樣式在這里會成為問題)。
更新:盡管在某些情況下這可能是一個不錯的選擇,但我更喜歡JoelEsli的解決方案,因此為了完整起見,我將其保留在此處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.