タグ付けされた質問 「autorotate」

25
iOS 8でビューコントローラーの向きを強制する方法
iOS 8より前は、supportedInterfaceOrientationsおよびshouldAutoRotateデリゲートメソッドと組み合わせて以下のコードを使用して、アプリの向きを特定の向きに強制しました。以下のコードスニペットを使用して、プログラムでアプリを目的の向きに回転させました。まず、ステータスバーの向きを変更します。そして、モーダルビューを表示してすぐに閉じると、ビューが目的の方向に回転します。 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; UIViewController *c = [[UIViewController alloc]init]; [self presentViewController:vc animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil]; しかし、これはiOS 8では失敗しています。また、スタックオーバーフローでいくつかの回答を見てきましたが、iOS 8以降はこのアプローチを常に避けるべきであると人々から提案されました。 具体的には、私のアプリケーションはユニバーサルタイプのアプリケーションです。合計3つのコントローラーがあります。 First Viewコントローラ -iPadではすべての方向をサポートし、iPhoneではポートレート(ホームボタンを押した状態)のみをサポートする必要があります。 セカンドビューコントローラー -すべての状況でランドスケープのみをサポートします サードビューコントローラー -すべての状況でランドスケープのみをサポートする必要があります ページナビゲーションにはナビゲーションコントローラを使用しています。最初のビューコントローラーから、ボタンクリックアクションで、2番目のアクションをスタックにプッシュします。そのため、デバイスの向きに関係なく、2番目のビューコントローラーが到着すると、アプリは横向きにのみロックする必要があります。 以下は、2番目と3番目のビューコントローラーのmy メソッドshouldAutorotateとsupportedInterfaceOrientationsメソッドです。 -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscapeRight; } -(BOOL)shouldAutorotate { return NO; } これの解決策、またはiOS 8の特定の方向でビューコントローラをロックするより良い方法はありますか?助けてください!!

15
iOS 6:一部のビューを縦向きに制限し、他のビューを回転できるようにするにはどうすればよいですか?
を使用しUINavigationControllerてドリルダウンインターフェイスを表示するiPhoneアプリがあります。最初のビュー、次に別のビュー、最大4レベルの深さです。最初の3つのビューを縦向きに制限し、最後のビューだけを横向きに回転できるようにする必要があります。4番目のビューから3番目のビューに戻るときに、4番目のビューが横向きだったとき、すべてを縦向きに回転させたいと思います。 iOS 5ではshouldAutorotateToInterfaceOrientation:、許容される向きに対してYESを返すように各ビューコントローラーで単純に定義しました。ビューコントローラー#4から#3に戻るときにデバイスが横向きに保持されていても、縦向きに戻ることを含め、すべてが上記のように機能しました。 iOS 6では、すべてのView Controllerが横向きに回転し、本来意図されていないものを壊します。iOS 6のリリースノートは言う より多くの責任は、アプリとアプリのデリゲートに移動することです。現在、iOSコンテナ(などUINavigationController)は、子に問い合わせて、自動回転する必要があるかどうかを判断しません。[...]システムは、デバイスが回転するとき、またはビューコントローラーがフルスクリーンモーダルプレゼンテーションスタイルで表示されるときは常に、サポートされているインターフェイスの向きを最上部のフルスクリーンビューコントローラー(通常はルートビューコントローラー)に要求します。さらに、サポートされている方向は、このビューコントローラーがそのshouldAutorotateメソッドからYESを返した場合にのみ取得されます。[...]システムは、アプリのsupportedInterfaceOrientationsForWindow:メソッドによって返された値supportedInterfaceOrientationsと、一番上のフルスクリーンコントローラーのメソッドによって返された値を交差させることによって、向きがサポートされているかどうかを判断します。 そこで、私はをサブクラス化しUINavigationController、MainNavigationControllerブール値のプロパティlandscapeOKを与え、これを使用しての許容可能な向きを返しましたsupportedInterfaceOrientations。次に、各View ControllerのviewWillAppear:メソッドに次のような行があります [(MainNavigationController*)[self navigationController] setLandscapeOK:YES]; 私MainNavigationControllerに望ましい行動を伝えるために。 ここで質問があります。ポートレートモードで4番目のビューに移動し、電話を裏返しにすると、横向きに回転します。次に、[戻る]ボタンを押して、ポートレートのみで機能する3番目のビューに戻ります。しかし、元に戻りません。それをどうやって行うのですか? 私は試した [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait] でviewWillAppear、私の3番目のビューコントローラのメソッドが、それは何もしません。これは呼び出すのに間違ったメソッドですか、それを呼び出すのに間違った場所ですか、それとも全体をまったく異なる方法で実装する必要がありますか?
99 ios  iphone  ios6  autorotate 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.