0

I have this

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;

at this point width is zero...

zero?

any clues why?

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 に答える