6

その背後にあるビューを見るために、UIModalPresentationCurrentContext を使用して VC の上に VC を表示しようとしています。以下のコードは動作します:

UIViewController *transparentViewController = [[UIViewController alloc] init];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:transparentViewController animated:NO completion:^{
}];

ただし、VC がプッシュされた後にデバイスを回転させると、回転が完全に台無しに見えます。きれいに回転する代わりに、ビューをぎこちなく引き伸ばして、新しい向きに合わせます。

さらに、transparentViewController をサブクラス化すると、その viewwillautorotate メソッドが呼び出されていないことがわかります。(めちゃくちゃなアニメーションの方法で回転していますが)

UIModalPresentationCurrentContext スタイルは回転するものではありませんか? とにかくこのあたりはありますか?他の誰かがこの問題に遭遇しましたか?

4

1 に答える 1

0

この問題は元のView Controllerが回転できないことに関連していると思われるため、モーダルView Controllerも回転がブロックされています。これを回避するには、メソッドを使用して元UIViewControllerのを にレンダリングします。次に、これをモーダル ビュー コントローラーのビュー階層の一番下に配置できます。これにより、View Controller が透明に見えるという効果が得られます。これは、その背後にあるものが偽の静止画像で表示されているためです。次に、 が回転するときに、 を に手動で適用して、その上のコンテンツを自由に回転させながら、背景を所定の位置に保つことができます。CALAyerUIImagerenderInContextUIImageViewUIViewControllerCGAffineTransformUIImageView

于 2013-02-19T05:23:59.587 に答える