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