13

私は現在、非常に奇妙な問題に悩まされています。iOS 6 と Xcode 4.5 を使用しています。と を含むストーリーボードがありUIViewControllerますUIButtonUIButton.h ファイルへの弱いアウトレットを作成しました。

.m ファイルで、ボタンのフレームを変更したいのですが、何も起こりません。それでもUIImageView、 と同じ方法で を作成して接続しましたが、のフレームを問題なくUIButton変更できます。UIImageView

私がこれを行うとき:

NSLog(@"%@", button) 

私はこの出力を得る:

<UIButton: 0xa185a40; frame = (191 330; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xa185640>>

そして、これらは私のコードの関連部分です:

-(void)viewDidLayoutSubviews{
    [self addStampGrid];
}

-(void)addStampGrid {

    // ...

    [_button setFrame:CGRectMake(10,10,10,10)];
}
4

5 に答える 5

23

XCode4.5とiOS6を展開ターゲットとして使用しても同じ奇妙な問題が発生しました。絵コンテは使っていません。Interface Builderで「UseAutolayout」オプションを無効にすることで、なんとか解決できました。(ファイルインスペクター->InterfaceBuilderドキュメント内。

お役に立てれば

于 2012-12-07T10:58:01.083 に答える
11

UIButtonのレイヤーのフレームを変更することで、UIButtonのフレームを変更できます

 [self.button.layer setFrame:] 

これを使用する前に、クラスヘッダーに QuartzCore フレームワークをインポートしてください。これは自動レイアウトでも機能します。

于 2014-10-14T04:27:16.233 に答える
6

スーパービューからビューを削除し、フレームを設定した後、このビューをサブビューとして再度追加します。これがうまくいくことを願っています...

于 2013-03-06T07:17:54.043 に答える
1

// スーパービューからビューを削除します

UIView *view = yourButton.superview;
[yourButton removeFromSuperview];

// UIButton のフレームを変更

CGRect bounds = view.bounds;
yourButton.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));

// このビューをサブビューとして再度追加します

[view addSubview:yourButton];
于 2014-09-03T03:48:37.843 に答える