2016-07-14 15 views
2

AllButUpsideDown以外のすべてのビューで、ポートレートにロックされているアプリがあります。私が使用しているアプローチは、ターゲット一般設定メニューでポートレート、ランドスケープレフトとランドスケープライトを有効にすることです。次に、func supportedInterfaceOrientations() -> UIInterfaceOrientationMaskをオーバーライドし、.Portraitを返すUINavigationControllerおよびUITabBarControllerのサブクラスを作成します。回転動作iOS8 vs iOS9

私のビューコントローラでは、回転が可能である必要があります。また、func supportedInterfaceOrientations() -> UIInterfaceOrientationMaskをオーバーライドし、.AllButUpsideDownを返します。このビューコントローラはモーダルとしてのみ表示されるため、これはうまく動作します。つまりaViewController.presentViewController()です。

iOS8のiOS9で期待どおりの動作をしますが、回転可能なビューコントローラーを閉じると、ランドスケープではUIが拡大表示され、ポートレートで表示されます。

result in iOS8

誰もがこのことについて何をすべきかを知っていますか?この回転のことが最初から間違っていますか?すべてのクリーンな修正?回避策?ハック?

UPDATE

私の問題は、回転させることができ、ビューコントローラを提示し、却下するカスタムの移行を使用して私から始まりました。私はしばらくの間、さまざまな解決策でそれを回避しようとしました。私が解決策を得た最も近いのは、回転可能なビューコントローラーに別のUIWindowを使用することでした。これは、キャリアーバーの問題がまだ間違った方向になっていたことを除き、解決できなかったものでした。

私が行った解決策(実際の解決策ではありません)は、iOS9 +とiOS8のカスタムトランジションを使用することでしたが、デフォルトの現在のトランジションを使用しました。

+0

これを確認してください。http://stackoverflow.com/questions/38308919/unable-to-force-uiviewcontroller-orientation/38308987#38308987 –

答えて

0

VCからのナビゲーションを元に戻すと、似たような問題が発生しました。これは、肖像画のみの風景に対応しています。私はきれいな回避策を見つけられませんでした。これらの行の組み合わせは使用することはお勧めしませんが、あなたが必死ならば、あなたが解雇しようとしているときにデバイスの向きを強制することができます。

let value = UIInterfaceOrientation.Portrait.rawValue 
UIDevice.currentDevice().setValue(value, forKey: "orientation") 
関連する問題