有没有办法以编程方式获取UIBarButtonSystemItem的宽度。对于系统项,width属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度。
在iPhone上的价值是44,但它在iPad上有点大,我无法确定它。
答案 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
获得灵活的空间。