iOS - 获取UITabBarItem的UIImageView / UIImage的框架

问题描述 投票:-1回答:2

我试图得到frame中显示的imageUITaBarItem。我可以得到任何viewUITabBarItem但是无法获得任何UITabBarItem的图像部分的框架。添加我的观点enter image description here的屏幕截图

ios swift uiimage frame uitabbaritem
2个回答
0
投票

其中一个简单的解决方案是

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
}

}

0
投票

获得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

© www.soinside.com 2019 - 2024. All rights reserved.