[英]How do I detect when the number of tabs changes on orientation in UITabBarController?
在 iPhone 13 pro max 上,縱向顯示 5 個標簽,橫向顯示 8 個標簽。
我想檢測標簽數量何時發生變化(例如:8 到 5 或 5 到 8)。
有時,新選項卡在 deviceOrientationDidChange 之后呈現,其中tabBar.items?.count
仍然指向舊值。
一種解決方案是覆蓋viewDidLayoutSubviews
。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("didLayout:", self.tabBar.items!.count)
}
該代碼假定self
是一個擴展UITabBarController
的 class。
此解決方案的一個問題是,當設備旋轉時, viewDidLayoutSubviews
可能會被調用不止一次(可能兩次),因此您必須調整邏輯來處理此問題。
另一種可能的解決方案是覆蓋viewWillTransition
:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: nil) { context in
print("didTransition:", self.tabBar.items!.count)
}
}
尾隨閉包是一個完成塊,在旋轉 animation 完成后調用。
此解決方案的一個問題是它最初未被調用。 它僅在設備旋轉或拆分視圖模式更改后調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.