これは別の投稿で見ました。iOS5 では最初のメソッドをオーバーライドし、iOS6 では次の 2 つのメソッドをオーバーライドする必要があることがわかりました。
iOS5:
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
iOS6
- (BOOL) shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeRight;
}
しかし、それらを適切に使用する方法についていくつか質問があります。
- XCode プロジェクトの設定で supportedOrientations を設定したとしましょう。shouldAutoRotate と SupportedInterfaceOrientations を実装する必要がありますか? そうしないとどうなりますか?
- shouldAutoRotate をオーバーライドしない場合、デフォルト値は YES ですか?
- shouldAutorotateToInterface で NO を返すと、「shouldAutorotateToInterfaceOrientation: すべてのインターフェイスの向きに対して。少なくとも 1 つの向きをサポートする必要があります」という警告が表示されます。これは悪いですか?アプリに影響はありますか?
- 「サポートされている方向にはアプリケーションと共通の方向がなく、shouldAutorotate が YES を返しています。」というクラッシュが発生するのはいつですか?
- shouldAutorotate で NO を返し、複数の supprotedInterfaceOrientations がある場合はどうなりますか? 私の VC は回転しないので、ポートレートを使用するのと同じですか?
- shouldAutorotate で YES を返した場合、Xcode 設定でサポートされている向きが複数ありますが、supportedInterfaceOrientations をオーバーライドして 1 つだけを返すとどうなりますか?