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
中显示image
的frame
。我可以获得任何UITabBarItem
的view
,但无法获得任何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 色调颜色?