私はこれが最もよくある質問であることを知っており、これを実現するためにあらゆる種類の組み合わせを試し、スタック オーバーフローに関するほとんどの投稿を確認したと信じています。
私は v1ViewController と呼ばれる UINavigationController を持っています。私がやろうとしているのは、それがユーザーに表示されるときに、縦向きまたは縦向きの上下モードで表示したいだけで、ユーザーがデバイスを回転させても横向きではありません。何もしないでください。
注:サポートされているインターフェイスの向きについて、Xcode ですべてのオプションを強調表示しました。他のビュー コントローラーの 1 つでは、横向きと縦向きの両方のモードでユーザーに何かを表示する必要がありますが、この UINav コントローラーでは縦向きモードのままにしておきます。
私が持っている iOS 5.0 用のコードは問題なく動作します。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
return YES;
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
return YES;
}
else
{
return NO;
}
}
私が抱えている頭痛の種はiOS 6です。私が何をしようとしても、ユーザーは血まみれのものを横向きに回転させることができます(コードとスクリーンショットを参照)
// *********************
// iPhone 5 orientation support
// *********************
- (BOOL)shouldAutorotate
{
UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
return YES;
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
return YES;
}
else
{
return NO;
}
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}