其中一个简单的解决方案是
guard let view = self.tabBarVC?.tabBar.items?[0].valueForKey("view") as? UIView
else
{
return
}
let frame = view.frame
要么
extension UITabBar {
func getFrameForTabAt(index: Int) -> CGRect? {
var frames = self.subviews.compactMap { return $0 is UIControl ? $0.frame : nil }
frames.sort { $0.origin.x < $1.origin.x }
return frames[safe: index]
}
}
extension Collection {
subscript (safe index: Index) -> Element? {
return indices.contains(index) ? self[index] : nil
}
}
获得UIBarButtonItem
的观点
public extension UIBarButtonItem {
var view: UIView? {
guard let view = self.value(forKey: "view") as? UIView else {
return nil
}
return view
}
}
从UIBarButtonItem
视图获取UIImageView:
let barItemImageView = self.navigationItem.rightBarButtonItem?.view.subviews.filter { view in
view is UIImageView
}.first
这将返回我右边的UIBarButtonItem的UIImageView