0

ランドスケープモードのビューコントローラーにいるとします。新しいviewcontrollerをプッシュしたときに、以前のviewcontrollerの向きを確認して、このビューの向きを変更する方法は?

助けてください。

ありがとうございました。

4

2 に答える 2

4

自動化された方法で実行する必要があります。各ViewControllerで、次のメソッドを定義する必要があります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

コントローラをどの方向に向けるかを設定できます。

iOS 5以前UIViewControllerでは、デフォルトでは縦向きのみを処理します。
他の可能な方向を処理するには、ViewControllerにこのメソッドを実装する必要があります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

    return YES;
}

また、回転を処理するメソッドを定義することもできます。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

また

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

または、自動化された方法でそれを行います。

あなたはここでもっと読むことができます。

ビューの回転の処理

iOS 6では、アプリはアプリのInfo.plistファイルで定義されたインターフェースの向きをサポートします。ビューコントローラは、supportedInterfaceOrientationsメソッドをオーバーライドして、サポートされている方向のリストを制限できます。通常、システムはこのメソッドをウィンドウのルートビューコントローラーまたは画面全体に表示されるビューコントローラーでのみ呼び出します。子ViewControllerは、親View Controllerによって提供されたウィンドウの一部を使用し、サポートされている回転に関する決定に直接関与しなくなりました。アプリの方向マスクとビューコントローラーの方向マスクの交点を使用して、ビューコントローラーを回転できる方向を決定します。

特定の方向で全画面表示されることを目的としたビューコントローラのpreferredInterfaceOrientationForPresentationをオーバーライドできます。

iOS 5以前では、UIViewControllerクラスはビューをポートレートモードでのみ表示します。追加の方向をサポートするには、shouldAutorotateToInterfaceOrientation:メソッドをオーバーライドし、サブクラスがサポートするすべての方向に対してYESを返す必要があります。ビューの自動サイズ変更プロパティが正しく構成されている場合は、それだけで済みます。ただし、UIViewControllerクラスは、必要に応じて追加の動作を実装するための追加のフックを提供します。一般に、View Controllerを子ViewControllerとして使用する場合は、すべてのインターフェイスの向きをサポートする必要があります。

表示されているビューコントローラで回転が発生すると、回転中にwillRotateToInterfaceOrientation:duration:、willAnimateRotationToInterfaceOrientation:duration:、およびdidRotateFromInterfaceOrientation:メソッドが呼び出されます。viewWillLayoutSubviewsメソッドは、ビューのサイズが変更され、親によって配置された後にも呼び出されます。向きの変更が発生したときにViewControllerが表示されない場合、rotationメソッドが呼び出されることはありません。ただし、ビューが表示されると、viewWillLayoutSubviewsメソッドが呼び出されます。このメソッドの実装では、statusBarOrientationメソッドを呼び出して、デバイスの向きを判別できます。

注:起動時には、アプリは常にインターフェースを縦向きに設定する必要があります。application:didFinishLaunchingWithOptions:メソッドが戻った後、アプリは上記のView Controller回転メカニズムを使用して、ウィンドウを表示する前にビューを適切な方向に回転させます。

于 2013-02-07T10:07:51.507 に答える
0

あなたの質問によると、あなたの要件と、なぜこれをしたいのかをより詳細に説明してください。

私の理解によると、新しいView Controllerでデバイスの現在の向きを確認できます。これは、以前のビューでのデバイスの以前の向きになります。

よろしく Rahul Dubey

于 2013-02-07T10:12:15.630 に答える