0

我有这个

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
              action:@selector(myAction:)
    forControlEvents:UIControlEventTouchDown];

[button setTitle:NSLocalizedString(@"Action", @"")
           forState:UIControlStateNormal];
CGFloat width = button.bounds.size.width;

此时宽度为零...

零?

任何线索为什么?

4

3 回答 3

7

由于您没有设置 UIButton 的框架,因此将代码修改为

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(20,20,50,50);
[button addTarget:self
              action:@selector(myAction:)
    forControlEvents:UIControlEventTouchDown];

[button setTitle:NSLocalizedString(@"Action", @"")
           forState:UIControlStateNormal];
CGFloat width = button.bounds.size.width; // Now the width of button would be 50
于 2013-01-23T07:59:50.853 回答
2

您正在创建一个按钮,但您没有设置它的框架,要么使用界面生成器创建它并在视图加载后访问它的框架,要么给它一个类似的框架:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame: CGRectMake (100, 200, 150, 44)];
[button addTarget:self ....
于 2013-01-23T08:07:06.217 回答
1

sizeToFit设置标题标签后调用您的按钮。这会将其大小调整为您刚刚设置的文本。

在绘制按钮之前,无论如何都会在按钮上调用它,但由于您似乎更早需要它,您可以自己做。

于 2013-01-23T08:03:45.290 回答