0

特定のビューを常に縦向きモードのままにしたい場合に、自動回転に問題があります。

私が見つけた1つの提案は、次のように横向きの回転が検出されたときにビューを元に戻すことでした:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                         duration:(NSTimeInterval)duration
{
    float rotation;

    if (toInterfaceOrientation==UIInterfaceOrientationPortrait) {
        rotation = 0;
    } 
    else 
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
        rotation = M_PI_2;
    } 
    else
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) {
        rotation = -M_PI_2;
    }

    videoWindow.transform = CGAffineTransformMakeRotation(rotation);
    openGLView.transform = CGAffineTransformMakeRotation(rotation);

}

その結果、ユーザーが横向きモードに変更するたびに、ビデオ ビューが正しく回転して元に戻るため、最初から回転していないかのように見えます。

私の問題は OpenGL ビューにあります。それを元に戻すと、OpenGL 図面の内容がゆがんで失敗し、ログに「Failed to make complete framebuffer object 8cd6」というエラーが表示されます。

ここで、前のコードにコメントを付けて、viewcontroller に OpenGL ビューを自動回転させると、回転し、何も歪まなくなります (ただし、ランドスケープでは測定値が収まりません。

だから私の質問は、デバイスの回転が検出されたときにAppleが物事をどのように回転させ、正確なプロセスを逆方向にシミュレートして、シミュレートされた回転ロックされたOpenGLビューを実現できるかです。

4

0 に答える 0