2

ビュー上に動的にいくつかのボタンを作成し、JSON応答パラメーターのいくつかに従ってそれらのフレームを決定します。しかし、デバイス(dsimulator)が回転したときにそれらのサイズを自動変更したいと思います。私はこれをInterfaceBuilderで簡単に行うことができますが、動的なものでは何もできません。誰かが助けることができますか? 編集

これが私のコードの一部です

if (button.tag==1) {
    button.frame = CGRectMake(30.0f, yPosition, 200.0f, buttonHeight);
}
if (button.tag==2) {
    button.frame = CGRectMake(280.0f, yPosition, 200.0f, buttonHeight);
}
if (button.tag==3) {
    button.frame = CGRectMake(530.0f, yPosition, 200.0f, buttonHeight);
}

ポートレイドモードを使用する場合は問題ありませんが、横向きに回転すると、画面の右側に大きな空の領域が残ります。これを修正するにはどうすればよいですか?(つまり、回転するときに、ボタンを画面の幅の中央に配置する必要があります)

編集: xibファイルを使用してSize Inspector(Xcode 4.3)の自動サイズ変更を試してみましたが、うまく機能しましたが、回転後に動的に作成されたボタンのサイズを変更できませんでした。UIViewのAutoresizingMask列挙型のほとんどすべてを試しましたが、何も変わりません。誰か助けてもらえますか

4

2 に答える 2

2

デバイスを回転させたときに予想される動作をコードで定義できます。

あなたは見ることができます:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/c/tdef/UIViewAutoresizing

ボタンを追加するときは、次のようにボタンの動作を設定する必要があります。

[button setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin]; 
于 2012-03-26T16:56:13.750 に答える
1

InterfaceBuilderファイルで設定した属性がUIViewAutoresizing属性です。

UIViewクラス(ボタンはそのサブクラスです)に関するAppleのこのドキュメントをご覧ください。属性を探しUIViewAutoresizingます。それはあなたが望むものです。

更新:この機能を使用するMKMapViewのコードスニペットは次のとおりです。

mainMapView = [[MKMapView alloc] initWithFrame:CGRectMake(20, 239, 280, 122)];
[mainMapView setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];

を使用UIViewAutoresizingFlexibleTopMarginすると、ユーザーが電話に応答するとマップビューが下に移動します。これにより、画面の上部に対するマップの位置が固定されます。

ドキュメントを調べてみると、状況に最適な自動サイズ変更マスクが見つかります。

于 2012-03-26T17:14:32.370 に答える