簡體   English   中英

如何檢測 UITabBarController 中的選項卡數量何時隨方向發生變化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM