0

図1

私のアプリは、UIImageView サブビューとその他のさまざまなサブビューを備えた UIScrollview に基づいて構築されています。横向きに回転するときは、スクロール ビューの contentSize を変更し、イメージ ビューのサイズを比例的に変更して、横幅の拡大を利用します。これは、プロポーションを維持するために高さも増加することを意味します。

私の質問は、示されている青いサブビューの場合、スーパービューが同じサイズではなくなった場合、回転後に相対的な位置を維持するように再配置するにはどうすればよいですか? convertRect:toView: と converPoint:toView: を試してみましたが、うまくいきません。

4

2 に答える 2

0

ビューの位置を変更するには、そのフレームを更新します。フレーム プロパティは、サイズ (CGSize) と原点 (CGPoint) の組み合わせである CGRect 型です。青いビューのサイズが変わらない場合は、原点のみを更新する必要があります。

iOS 座標系は左上隅から始まります。

iOS座標系

青いビューの場合、右下隅から原点を計算します。つまり、

origin = contentSize - blueViewSize - padding

これを別々に実行しxy座標を調整し、更新された原点で CGRect を作成し、青いビューのフレームを更新します。

UP: これは手動で行う方法ですが、UIKit にサブビューを自動的に再配置させることもできます (また、そうするべきです)。Xcode の Interface Builder で自動サイズ変更と自動レイアウトについて学び、開発者マニュアル

于 2013-10-31T18:50:39.427 に答える