iOSプログラミング with Swift 2


2016.05.29: created by

[注意] このコードは iPhone では期待通りに動作しますがiPad では回転方向を制限できません。 iPadに関してはこちらを参照して下さい。

Swiftで画面の回転を制限する (iPhone)

  1. Xcode を起動して "Create a new Xcode project" で "Single View Application" として新しいプロジェクトを開きます。 ここではプロジェクト名を SwiftRotate としています。



  2. プロジェクトの最初に表示される画面は、ウィンドウの左側に表示されている "Show the project navigator" アイコンをクリックしても表示されます。 プロジェクトのTARGETS ->"General" -> "Deployment Info" ->"Device Orientation" で画面の向きを設定できます。



  3. 縦向き+横向きの設定縦向きのみの設定
    Device Orientation で設定するとアプリ全体での制限になってしまうので、 ここでは
    Portrait
    Landscape Left
    Landscape Right
    
    にチェックが入った状態(デフォルトのまま)にします。
  4. ここで、複数の画面を使う方法 の操作を行い 2画面を使える状態にします。
  5. Main.storyboardが表示されている状態で、 ウィンドウの右上の "Show the Assistant Editor" ボタン をクリックし、さらに Main.storyboard上で右の新しい View Controller を選択して、 右側のウィンドウに ViewController2.swift が表示されている状態にします。



  6. 2画面目のUIViewControllerを制御するViewController2.swift を変更します。
  7. ViewController2.swift を変更します。
  8. ViewController2.swiftに追加するコード(赤字部分)
    import UIKit
    
    class ViewController2: UIViewController {
        @IBAction func tapBack(sender: AnyObject) {
            dismissViewControllerAnimated(true, completion: nil)
        }
        
        override func shouldAutorotate() -> Bool {
            return true
        }
        
        override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
            return UIInterfaceOrientationMask.Portrait
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
    



  9. 実行すると、最初の画面ではデバイスを横向きにすると画面も追随するが、 2番目の画面では表示は縦向きのままであることがわかる。
  10. サンプルのプロジェクトはこちら。(Xcode 7.3.1版)

Upside Down方向について

[注意] iPhone では Upside Down にチェックを入れただけでは有効になりません。その理由と対策方法は以下の通りです。

http://karel.tsuda.ac.jp