【问题标题】:Getting the width of a UIBarButtonSystemItem获取 UTI BarButtonSystemItem 的宽度
【发布时间】:2011-08-30 16:45:47
【问题描述】:

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

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

【问题讨论】:

标签: iphone objective-c ios uiviewcontroller uibarbuttonitem


【解决方案1】:

我的答案来自@JoBu1324 留下的评论链接。

这是我使用的代码。

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

【讨论】:

    【解决方案2】:

    显然 UIBarButtonItem 没有 frame 属性。由于 UIBarButtonItemNSObject 的直接子类(它又没有 frame),所以不可能得到 的 frame >UIBarButtonItem 来自代码(记录的 API)。

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

    【讨论】:

    • 它必须有某种框架,不管它是否被称为框架;它只是无法通过公共 API 访问
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 2013-07-19
      • 2012-06-16
      • 2012-10-10
      相关资源
      最近更新 更多