我正在使用一个名为SwiftyWalkthrough的外部库,它允许我在屏幕上仅显示某些视图,以通过我的应用程序的UI引导新用户.我想要向用户公开的第一个项目是UITabBarItem.我需要找到与该特定UITabBarItem相关联的UIView.我知道该项目的索引,我给它一个标签.但我没有找到方法帮助我找到这个观点.当然,我只想使用公共接口来实现这一目标.
我通过访问tabBar的子视图解决了我的问题.userInteractionEnabled的视图是UITabBarItems.按它们的minX值对它们进行排序可以保证它们与tabBar.items数组的顺序相同.
extension UITabBarController { func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) } }
Swift 3版本为Carl Smith的答案
func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) }