4

iOS5.0以降をサポートする必要のあるiPadアプリがあります。5.0/5.1では6.0とは異なる動作をするバグがあります。問題は、モーダルビューをプッシュするタブバーコントローラーのビューコントローラーであり、モーダルビューはnavigationControllerを介してフルスクリーンビューをプッシュします。問題は、全画面表示でiPadを回転させた場合、基になるビューコントローラー(タブバーコントローラー内の1つ)が回転しないことです。ここで、iOSバージョンの違いを分析します。

まず、問題のこのviewControllerは、shouldAutoRotateToInterfaceOrientation(YESを返します)とwillRotateToInterfaceOrientationおよびwillAnimateRotationToInterfaceOrientationを実装します。

iOS 6.0では、回転メソッド(willRotate ...&willAnimate ...)が呼び出されていないことに気付いたので、UIDeviceOrientationDidChangeNotification通知を受信するように登録し、その通知を受信した場合は2つのRotateメソッドからコードを実行します。他のメソッドは実行されていませんでした。これでiOS6.0の問題が修正されました。

問題は、5.0 / 5.1では回転メソッド(willRotate ...&willAnimate ...)が実行されているが、ビューが回転していないことです。このビューコントローラの上に「フルスクリーンビュー」が表示されず、iPadが回転すると、これら2つの方法が実行され、それに応じてビューが回転します。

助けてください。前もって感謝します。

上記以外で試したこと。

UIDeviceOrientationをチェックしてUIInterfaceOrientationに変換し、[self shouldAutorotateToInterfaceOrientation:xxx]を呼び出してみました。ビューはまだ間違って表示されます。

4

1 に答える 1

0

2 つの回転メソッドが実行されているときに、ビューに対して CAAffineTransformation を実行します。正常に戻ったら、再び -90 度で同じことを行います。

https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html

于 2012-12-24T07:14:33.727 に答える