获取 UIBarButtonSystemItem 的宽度

发布于 2024-11-19 19:08:46 字数 165 浏览 4 评论 0原文

有没有办法以编程方式获取 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哽咽笑 2024-11-26 19:08:46

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

这是我使用的代码。

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

I got my answer from the link that @JoBu1324 left of a comment.

Here is the code I used.

UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
话少情深 2024-11-26 19:08:46

显然UIBarButtonItem没有frame属性。由于 UIBarButtonItemNSObject 的直接子类(而 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 ;-)

风铃鹿 2024-11-26 19:08:46

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 style UIBarButtonSystemItemFlexibleSpace of UIBarButtonItem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文