2016-03-31 14 views
0

私のiOSアプリケーションでは、.Portraitモードしか持たないコントローラをいくつか追加したいと思います。.Landscapeにあるコントローラから来るときに.Portraitモードで回転しますモード。私が得る結果が正しくない。とにかくスウィフト:正しくUITableViewControllerとUIViewControllerを回転させる方法とポートレートモードで

override func viewWillAppear(animated: Bool) { 
    self.automaticallyAdjustsScrollViewInsets = true 
    super.viewWillAppear(animated) 
    let value = UIInterfaceOrientation.Portrait.rawValue 
    UIDevice.currentDevice().setValue(value, forKey: "orientation") 

} 

:私はこれらの.Portraitのみのビューコントローラで次のメソッドを実装する正しい方法だと思いました。たとえば、次は.PortraitのみUITableViewControllerあるとviewWillAppear()が呼び出されたときに、代わりにこの

enter image description here

の私が代わりに次の

enter image description here

を取得し、これがUIViewControllerでも起こります。それはビュー(またはテーブルビュー)が回転されず、.Landscapeモードにとどまるようなものです。私は何が欠けていますか?

答えて

0

あなたはオートレイアウトと遊ぶのですか?リーディングエッジを設定すると、後ろのエッジがすべて正しく機能します。

別の解決策は、手動でのTextViewを再計算することができます。

override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) { 
    textView.frame = CGRect(x: textView.frame.minY, y: textView.frame.minX, width: textView.frame.height, height: textView.frame.width) 
} 

UPDATE

私は私の以前のソリューションをテストし、それが動作しませんが、私は別の方法を見つけました。実際に、あなたはそれを回転させ、viewWillAppear 1より多くの時間を呼び出す必要がある - それは私のために動作し、これを試してみてください。

if orientation.isLandscape{ 
    let value = UIInterfaceOrientation.Portrait.rawValue 
    UIDevice.currentDevice().setValue(value, forKey: "orientation") 
    viewWillAppear(false) 
} 

ありません - それはすべてのケースでは動作しません...

私はそれをテストしていますこのように:

  1. 私は、アプリで(方向性をチェックされていない)タブバー項目における景観へ

  2. モバイル回転、です。その後、私は向きをチェックしたタブバー項目をタップして回転させます)

  3. 問題なく回転していて、もう一度問題を表示しています。しかし、別のタブバーアイテムをタップして戻ってくると、すべてがうまくいく - 私はいくつかのメソッドを呼び出す必要があると思う。

+0

はい、私は、自動レイアウトを使用し、多くの制約を設定します。ですから、あなたが書いた方法を実装しなければなりませんか? –

+0

申し訳ありませんが、私は理解していない怖い... –

+0

は私がこのアイデアをテストしますと、私は[OK]を – rudald

関連する問題