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

Posted

技术标签:

【中文标题】iOS - 获取 UITabBarItem 的 UIImageView/UIImage 的框架【英文标题】:iOS - Getting frame of the UIImageView/UIImage of a UITabBarItem 【发布时间】:2019-02-27 06:39:41 【问题描述】:

我正在尝试在UITaBarItem 中显示imageframe。我可以获得任何UITabBarItemview,但无法获得任何UITabBarItem 的唯一图像部分的框架。添加我的观点截图

【问题讨论】:

可以使用self.tabBarItem.selectedImage?.size获取tabBarItem图片的大小 @NileshRPatel 我需要框架。我找到了解决方案,解决了问题 【参考方案1】:

一个简单的解决方案是

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



【讨论】:

我知道您的第一个解决方案。我正在使用它。我只需要 uiimage 部分【参考方案2】:

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

【讨论】:

以上是关于iOS - 获取 UITabBarItem 的 UIImageView/UIImage 的框架的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 4 中更改 UITabBarItem 中文本的颜色

iOS 7.1 中的 UITabBarItem 更改徽章颜色

在 iOS 13 中,UITabBarItem 的 standardAppearance 应用于所有其他项目

在 iOS 9 中更改 UITabBarItem 色调颜色?

为啥这个 UITabBarItem 图像切换代码在 iOS 7 上有效,而在 iOS 7.1 上无效?

如何在 iOS 中像 UITabBarItem 一样设计 UIButton?