以前にも同様の質問があったことは知っていますが、これはより具体的な使用例です (静的ライブラリから方向を制御し、ルート ビュー コントローラーに書き込むことはできません)。
渡されたビュー コントローラー (クライアントのルート ビュー コントローラー) にサブビューとして UI 要素をオーバーレイとして追加する静的ライブラリがあります。問題は、クライアントのアプリケーションが縦向きと横向きの両方をサポートしているにもかかわらず、UI 要素が縦向きのみをサポートしていることです。クライアントのビューが自動回転するときに UI 要素が自動回転しない限り、これは問題ありません。
ビューコントローラーのみの縦向きのみに向きをロックしたいと思います。iOS 6 では、ライブラリのビュー コントローラーで次のコードを使用しても、自動回転の動作にはまったく影響しません。
-(BOOL)shouldAutorotate{
return NO;
}
-(NSInteger)supportedInterfaceOrientations{
NSInteger orientationMask = 0;
if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortrait])
orientationMask |= UIInterfaceOrientationMaskPortrait;
return orientationMask;
}
同じコードをルート ビュー コントローラーに配置すると、アプリが自動回転しなくなり、完全に機能します。ただし、本番環境ではクライアントのルート ビュー コントローラーにアクセスできないため、これはオプションではありません。ルートView Controller以外からビューの向きをロックする方法、または単一のView Controllerのみの向きをロックする方法はありますか? 私が考えていない必要なものを達成する他の方法はありますか? 可能であればiOS <= 6で動作するソリューションを期待しています