私はなんとか両方の問題を解決することができました。
回転の場合は、ターゲットの概要で横向きを有効にします。
次に、ViewControllerに次の行を追加します。最上位のコントローラーに追加するだけで十分です。たとえば、アプリケーション全体がナビゲーションコントローラーで実行されている場合は、ナビゲーションコントローラーをサブクラス化できます。
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
shouldAutorotate
技術的には、iOS 6では回転しないので、戻ってきれば十分だと思いますNO
。実装しない場合は、shouldAutorotateToInterfaceOrientation:
iOS5ではデフォルトで上記になっていると思います。とにかく含めたいと思います。
これにより、アプリが縦向きでのみ機能するようになりますが、MPAVController(UIWebViewがビデオの表示に使用する)には影響しないため、正しく回転します。
MPAVControllerでの外観の設定を回避するために、外観APIへの呼び出しを次のように変更しました。
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"MyBackgroundImage.png"] forBarMetrics:UIBarMetricsDefault];
に
[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil] setBackgroundImage:[UIImage imageNamed:@"NavigationBar_Background.png"] forBarMetrics:UIBarMetricsDefault];
これにより、ナビゲーションバーがMPAVControllerにはないナビゲーションコントローラー内に含まれている場合にのみ、背景が設定されます。