6

以前にも同様の質問があったことは知っていますが、これはより具体的な使用例です (静的ライブラリから方向を制御し、ルート ビュー コントローラーに書き込むことはできません)。

渡されたビュー コントローラー (クライアントのルート ビュー コントローラー) にサブビューとして 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で動作するソリューションを期待しています

4

1 に答える 1