获取UIBarButtonItem的宽度

时间:2011-02-21 13:59:12

标签: iphone objective-c uibarbuttonitem

我正在尝试获得UIBarButtonItem的宽度。

这不起作用:

barbuttonitem.customView.frame.size.width

这也行不通:

barbuttonitem.width

5 个答案:

答案 0 :(得分:53)

这个怎么样:

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

答案 1 :(得分:4)

我遇到了同样的问题。经过多次尝试,我发现了一些有用的东西!

在我的特定情况下,我需要从导航控制器的工具栏中获取第一个UIBarButtonItem的宽度,但是您可以轻松地根据您的喜好调整它:

UIToolbar *toolbar = self.navigationController.toolbar; // or whatever toolbar you need
UIView *view = (UIView *)[toolbar.subviews objectAtIndex:0]; // 0 for the first item
double itemWidth = view.bounds.size.width;

请注意:我必须在viewDidLoad中使用此代码才能获得正确的值。在init中它返回0.0

亚瑟

答案 2 :(得分:0)

如果您对某个特定项目的宽度感兴趣,最简单的方法是使用两个IBOutlet:一个用于按钮,另一个用于相应的条形按钮项目。您将读取按钮宽度,而不是读取条形按钮项目宽度。

当然,如果您需要这种方法,这种方法将不起作用。将循环中的宽度相加。 (顺便说一句,第一个按钮从x = 12开始,两个按钮之间的距离是10,除非你做了一些棘手的事情。)当然,你可以有两个数组,但这只是麻烦。

答案 3 :(得分:0)

工具栏中总是有多个子视图。

除了arthurs的答案,你可以迭代它们并检查它的类型。

for sv in self.navigationController!.toolbar.subviews {
        if sv.isKindOfClass(UIBarButtonItem.self){
            let width = sv.bounds.width
        }
    }

答案 4 :(得分:0)

直接获取条形按钮项的宽度。

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image"] style:UIBarButtonItemStylePlain target:self action:@selector(action:)];

double width = barButtonSetting.image.size.width;