ポートレートモードで表示したいアプリがあります。しかし、両方のモードで 1 つのビューのみを表示したいと考えています。
iOS5 でこれを行いました。しかし、iOS6では、これを行うことができません。
また、それを解決するために多くのコードを試しました。
アプリでナビゲーションを使用し、両方のモードで 1 つのビューのみを回転させることは、ios6 では不可能です。ビューの回転を修正したか、アプリ全体を回転させました。私は正しいですか?
どうすればこの問題を解決できますか?
ポートレートモードで表示したいアプリがあります。しかし、両方のモードで 1 つのビューのみを表示したいと考えています。
iOS5 でこれを行いました。しかし、iOS6では、これを行うことができません。
また、それを解決するために多くのコードを試しました。
アプリでナビゲーションを使用し、両方のモードで 1 つのビューのみを回転させることは、ios6 では不可能です。ビューの回転を修正したか、アプリ全体を回転させました。私は正しいですか?
どうすればこの問題を解決できますか?
iOS6では、次の画像のようにplistでこれを試していますか:-
また、xcode->projectname->summary:- で設定することもできます。
Apple の iOS 6 SDK リリース ノートから:
自動回転は iOS 6 で変更されています。iOS 6 では、UIViewController の shouldAutorotateToInterfaceOrientation: メソッドは非推奨です。その代わりに、 supportedInterfaceOrientationsForWindow: および shouldAutorotate メソッドを使用する必要があります。
More responsibility is moving to the app and the app delegate. Now, iOS containers (such as UINavigationController) do not consult
自動回転するかどうかを子供たちに決定させます。既定では、アプリとビュー コントローラーのサポートされるインターフェイスの向きは、iPad イディオムの場合は UIInterfaceOrientationMaskAll に設定され、iPhone イディオムの場合は UIInterfaceOrientationMaskAllButUpsideDown に設定されます。
A view controller’s supported interface orientations can change over time—even an app’s supported interface orientations can change
時間とともに。システムは、デバイスが回転するたびに、またはビュー コントローラーがフルスクリーン モーダル プレゼンテーション スタイルで表示されるたびに、サポートされているインターフェイスの向きを最上位のフルスクリーン ビュー コントローラー (通常はルート ビュー コントローラー) に問い合わせます。さらに、サポートされている向きは、このビュー コントローラーが shouldAutorotate メソッドから YES を返した場合にのみ取得されます。システムは、View Controller のサポートされている向きとアプリのサポートされている向き (Info.plist ファイルまたはアプリのデリゲートの application:supportedInterfaceOrientationsForWindow: メソッドによって決定される) を交差させて、回転するかどうかを決定します。
The system determines whether an orientation is supported by intersecting the value returned by the app’s
supportedInterfaceOrientationsForWindow: 最上位のフルスクリーン コントローラーの supportedInterfaceOrientations メソッドによって返される値を持つメソッド。setStatusBarOrientation:animated: メソッドは完全に廃止されたわけではありません。これは、最上位のフルスクリーン ビュー コントローラーの supportedInterfaceOrientations メソッドが 0 を返す場合にのみ機能するようになりました。
For compatibility, view controllers that still implement the shouldAutorotateToInterfaceOrientation: method do not get the new
自動回転動作。(つまり、アプリ、アプリ デリゲート、または Info.plist ファイルを使用して、サポートされている向きを決定する方法にフォールバックしません。)代わりに、 shouldAutorotateToInterfaceOrientation: メソッドを使用して、 supportedInterfaceOrientations メソッドによって返される情報を合成します。 .
アプリ全体を回転させたい場合は、すべての向きをサポートするように Info.plist を設定する必要があります。特定のビューを縦向きのみにしたい場合は、ある種のサブクラスを実行し、自動回転メソッドをオーバーライドして縦向きのみを返す必要があります。
この例を参照してくださいiOS 6 で UIViewController を強制的に縦向きにする方法
編集:
ソリューション:
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end