0

多数の UIView と画像が読み込まれた iPad アプリがあります。1 つの向きでは正常に機能しますが、すべての向きで機能させる必要があります。UIDeviceOrientationDidChangeNotification を購読しています。デバイスがどの方向を向いているかがわかったら、UI をリセットする必要があります。私が今行っていることは、各 UIView を手動で調べてその原点を変更し、そのビュー内にあるものは何でも原点を再構成することです。ビューを回転させる簡単な方法はありますか? 例 :

         - (void)orientationChanged:(NSNotification *)notification
         {
             UIDeviceOrientation oriantation;
             newOrientation=[[UIDevice currentDevice] orientation];
             switch (newOrientation) {
                   case UIDeviceOrientationLandscapeRight:
                            CGRect landscaperight = self.view.frame;
                            landscaperight.origin.x -= 768;
                            self.view.frame = landscaperight;
               break; 
         }

ここでの問題は、作業するビューがたくさんあることです。そのため、このタスクを処理するより簡単な方法があれば幸いです。

ありがとう。

4

1 に答える 1

0

自動回転を機能させる基本的な部分の 1 つはautoresizingMask、ビューに を設定することです。

IB で視覚的に行うことも、次のようにプログラムで行うこともできます。

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

上記のコードは、左、右、上、および下の余白を変更せずに、ウィンドウをそのスーパービューに合わせます。アプリで使用しているビューの王様によっては、他のサイズ変更フラグを使用して余白を柔軟にする必要がある場合があります (つまり、向きが変わったときに移動して、インターフェイス全体を調整します)。

このアプローチは、すべての iOS バージョンで機能します。

これに関連して私が便利だと思った手法autoresizingMaskは、一連のサブビューをまとめることだけを目的としたコンテナー ビューを使用することです。たとえば、上部マージンから一定の距離で同じ行に表示する必要がある一連のコントロール: コントロールをコンテナー ビュー内に配置します。次に、コンテナビュー内で「自由に移動」させます(柔軟な上/下/左/右マージンを設定することにより。同時に、コンテナビューを必要な位置に「固定」します。

この一般的なヒントとは別に、何をしようとしているのか、どのような問題を発見したのかを知らずに、これ以上具体的なことを言うことはできません.

iOS6 のみをサポートしている場合は、Auto Layoutを使用できます。

于 2013-01-30T16:06:44.033 に答える