获取UIBarButtonSystemItem的宽度

时间:2011-07-13 07:51:25

标签: iphone objective-c ios uiviewcontroller uibarbuttonitem

有没有办法以编程方式获取UIBarButtonSystemItem的宽度。对于系统项,width属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度。

在iPhone上的价值是44,但它在iPad上有点大,我无法确定它。

3 个答案:

答案 0 :(得分:1)

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

这是我使用的代码。

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

答案 1 :(得分:0)

显然 UIBarButtonItem 没有 frame 属性。由于 UIBarButtonItem NSObject 的直接子类(而后者没有 frame ),因此无法获得的框架> UIBarButtonItem 来自代码(记录的API)。

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

答案 2 :(得分:0)

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