获取 UIBarButtonSystemItem 的宽度
有没有办法以编程方式获取 UIBarButtonSystemItem 的宽度。对于系统项,宽度属性始终返回 0。特别是,我想获取 UIViewController 的 editButtonItem 属性的确切宽度。
在 iPhone 上这个值是 44,但在 iPad 上这个值要大一些,我无法确定它。
Is there a way to programmatically get the width of a UIBarButtonSystemItem. The width property always returns 0 for system items. In particular, I want to get the exact width of the editButtonItem property of a UIViewController.
On the iPhone the value is 44 but it is a bit bigger on the iPad and I cannot nail it down.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我从@JoBu1324 留下的评论链接中得到了答案。
这是我使用的代码。
I got my answer from the link that @JoBu1324 left of a comment.
Here is the code I used.
显然UIBarButtonItem没有frame属性。由于 UIBarButtonItem 是 NSObject 的直接子类(而 NSObject 没有框架),因此不可能获取 NSObject 的框架>UIBarButtonItem 来自代码(已记录的 API)。
您必须依靠其他一些方法来找到宽度,因为您发现 44 是 iPhone 中 editButtonItem 的宽度;-)
Obviously UIBarButtonItem doesn't have the frame property. As UIBarButtonItem is a direct subclass of NSObject(which in turn don't have the frame), its impossible to get the frame of UIBarButtonItem from code(documented API's).
You have to rely on some other ways to find the width, as you found 44 is the width of editButtonItem in iPhone ;-)
UIBarButtonItem 有一个属性
width
,但对于系统按钮来说,它通常为 0。因此,我通常使用自定义按钮和按钮内的本地化字符串,或者使用flexibleSpace UIBarbuttonItem 在左右按钮之间添加灵活的空间。可以通过NSString的-sizeWithFont
方法来计算字符串的宽度。可以通过UIBarButtonItem的样式UIBarButtonSystemItemFlexibleSpace
来获得灵活的空间。The UIBarButtonItem has a property
width
, but it generally is 0 for system buttons. So, I usually use my custom button with my localized string inside the button, or use flexibleSpace UIBarbuttonItem to add a flexible space between left and right buttons. You can calculate the width of string by the method-sizeWithFont
of NSString. A flexible space can be obtained by the styleUIBarButtonSystemItemFlexibleSpace
of UIBarButtonItem.