Iphone 获取UIBarButtonSystemItem的宽度

Iphone 获取UIBarButtonSystemItem的宽度,iphone,objective-c,ios,uiviewcontroller,uibarbuttonitem,Iphone,Objective C,Ios,Uiviewcontroller,Uibarbuttonitem,是否有一种方法可以通过编程方式获取UIBarButtonSystemItem的宽度。对于系统项,“宽度”属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度 iPhone上的值是44,但iPad上的值要大一点,我无法确定。显然,UIBarButtonItem没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttoni

是否有一种方法可以通过编程方式获取UIBarButtonSystemItem的宽度。对于系统项,“宽度”属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度

iPhone上的值是44,但iPad上的值要大一点,我无法确定。显然,UIBarButtonItem没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttonite的框架

您必须依靠其他方法来查找宽度,因为您发现44是iPhone中editButtonItem的宽度;-)

显然,uibarbuttonite没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttonite的框架


您必须依靠其他方法来查找宽度,因为您发现44是iPhone中editButtonItem的宽度;-)

UIBarButtonItem有一个属性
width
,但系统按钮通常为0。因此,我通常使用自定义按钮和按钮内的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按钮之间添加灵活的空格。您可以通过NSString的方法
-sizeWithFont
计算字符串的宽度。可通过UIBarButtonItem的样式
UIBarButtonSystememFlexibleSpace
获得灵活的空间。

UIBarButtonItem有一个属性
宽度
,但系统按钮通常为0。因此,我通常使用自定义按钮和按钮内的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按钮之间添加灵活的空格。您可以通过NSString的方法
-sizeWithFont
计算字符串的宽度。灵活的空间可以通过uiBarButtonim的样式
uiBarButtonSystemFlexibleSpace
获得。

我从@JoBu1324留下的评论链接中得到了答案

这是我使用的代码

UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;

我从@JoBu1324留下评论的链接中得到了答案

这是我使用的代码

UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;

这里有两种可能性,但我猜任何有效的答案都可能依赖于未记录的API:(注意:我没有测试任何代码)这里有两种可能性,但我猜任何有效的答案都可能依赖于未记录的API:(注:我没有测试任何代码)它必须有某种框架,不管它是否被称为框架;它只是不能通过公共API访问,它必须有某种框架,无论它是否被称为框架;它只是无法通过公共API访问