私はios 5まで正常に動作するユニバーサルアプリで作業していますが、ios 6では向きの問題があります。私のアプリは縦向きモードのみです。問題は、iPad が横向きモードの場合で、アプリを起動しても向きが protrait に変わらないことです。だから、アプリが起動する前に、デバイスの向きに関係なく、アプリをprotraitモードにするように、いくつかのコードを手伝ってください
3 に答える
最初に、サポートされている向きを [ターゲット] -> [概要] で設定する必要があります...
iOS6.0 では shouldAutorotateToInterfaceOrientation メソッドは非推奨です。そのため、このメソッドの代わりに shouldAutorotate メソッドを使用する必要があります。
また、メソッド supportedInterfaceOrientations を使用して、すべての向きが必要な場合は、UIInterfaceOrientationMaskAll のように必要な向きを設定する必要があります。
これは、AppleがUIViewControllerの向きを管理する方法を変更したために発生しています。Ios6では、Oreintationは異なる方法で処理します。iOS6コンテナ(UINavigationControllerなど)では、自動回転する必要があるかどうかを判断するために子供に相談しません。デフォルトでは、アプリとビューコントローラーでサポートされているインターフェイスの向きは、iPadイディオムの場合はUIInterfaceOrientationMaskAllに設定され、iPhoneイディオムの場合はUIInterfaceOrientationMaskAllButUpsideDownに設定されます。したがって、デバイスの向きはデフォルトで変更されます。
したがって、いくつかの手順を実行する必要があります。
1-ここから方向を設定します
2-RootViewControllerに追加されたFirstViewControllerにこのコードを配置します
@implementation UINavigationController (RotationIn_IOS6)
//Here UINavigationController is the RootViewController added To the Window
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end
**以下のメソッドをViewControllerに配置し、IOS6で導入されたOreintationの変更を許可します**
- (BOOL)shouldAutorotate
{
return NO;
}
/*Return the Number of Oreintation going to supported in device*/
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown );
}
// Returns interface orientation masks.
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown ) ;
}
ViewController.m
で、サポートされている向きを定義する必要があります。IOS 6 では、これはサポートされている方向を処理するメソッドです。
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
UIInterfaceOrientationMaskAll
のすべての向きをサポートすることを意味しますview
。
Apple Doc もお読みください - Doc about Orientation