5

私は、インテリジェントハウスのプロトタイプでさまざまなものを制御できるiPadアプリに取り組んでいます。たとえば、ライトのオンとオフを切り替えることができます。このためUIImageViewに、家の間取り図を示すを作成し、UIButtons切り替え可能な各ランプのサブビューとして追加しました。

ここに画像の説明を入力してください

setFrameご覧のとおり、ボタンはそれぞれの方法を使用して間取り図に完全に配置されていますUIButton。ただし、iPadを縦向きに回転させると、次のようになります。

ここに画像の説明を入力してください

ボタンの原点は明らかに同じですが、画像の再配置とは関係ありません。

平面図の画像には、支柱とばねの次の設定があります。

ここに画像の説明を入力してください

コンテンツモードがに設定されていAspect Fitます。

私の質問は

UIButton同じ相対位置になるように、それぞれを動的に再配置するにはどうすればよいですか。{did/should}AutorotateToInterfaceOrientationこれはdelegateメソッドで処理する必要があると思います。

はズーム可能であり、これを処理するために、デリゲートメソッドを次のようUIImageViewに実装していることに注意してください。scrollViewDidZoom

for (UIView *button in _floorPlanImage.subviews) {       
    CGRect oldFrame = button.frame;
    [button.layer setAnchorPoint:CGPointMake(0.5, 1)];
    button.frame = oldFrame;
    button.transform = CGAffineTransformMakeScale(1.0/scrollView.zoomScale, 1.0/scrollView.zoomScale);
}

前もって感謝します!

4

1 に答える 1

1

サブビューをレイアウトする最良の方法は、- (void) layoutSubviewsメソッドにあります。UIImageViewをサブクラス化し、メソッドをオーバーライドする必要があります。

このメソッドは、フレームが変更されるたびに自動的に呼び出され、ビューが最初に表示されたときにも呼び出されます。

すべてのレイアウトコードをこのメソッドに入れると、レイアウトの断片化と繰り返しが防止され、ビューコードがビューに保持され、ほとんどのことがデフォルトで機能します。

于 2012-06-25T03:55:42.390 に答える