6

これはとても単純なことのように思えますが、なぜうまくいかないのか理解できません。別のハンドラーUIButtonからa のサイズを変更しようとしています。touchUpInside再現するために、Xcode で新しい (iOS 6) プロジェクトを作成し、デフォルトで作成される xib ファイルに 2 つのボタンをドラッグしました。のtouchUpInsideハンドラをbutton1以下に示します。origin.xofを設定するステートメントだけを含めると、期待どおりbutton2button2動きます。ただし、size.widthボタンの を設定するステートメントは機能しません。実際、そのステートメントを含めても、起源も変わりません。

私はxibデザイナーと私が設定した唯一のプロパティでボタンのサイズをうまく変更できます(

- (IBAction)buttonPressed:(id)sender {
    CGRect f = self.button2.frame;
    f.origin.x += 10;
    // this doesn't work, including it prevents even the origin change from working
    f.size.width += 10; 
    self.button2.frame = f;
}

ボタンのサイズをうまく変更するにはどうすればよいですか?

ありがとう!

4

5 に答える 5

7

AutoLayout を使用していることは確かですが、ここで何が起こっているかというと、iOS の AutoLayout メカニズムがレイア​​ウトを自動的に設定しようとするからです。AutoLayout をオフにしてコードを試してください。xcode で自動レイアウトをオフにする方法を教えていただければ幸いです。

ハッピーコーディング!!!

編集:

AutoLayout は iOS 6 に付属しているため、コードが古いバージョン (iOS 5) で動作したのはそのためです。ニックが言ったように、xcodeのファイルインスペクターでAutoLayoutをオフにできます。

添付のスクリーンショットを参照してください。

ここに画像の説明を入力

于 2013-01-15T08:55:10.580 に答える
3

試す :

CGRect buttonFrame = button.frame;
buttonFrame.size = CGSizeMake(150, 70);
button.frame = buttonFrame;
于 2013-01-15T08:00:26.997 に答える