【Swift】カメラでの撮影時にデバイスの回転を抑止する方法
UIImagePickerControllerを使ってカメラを作成し、撮影時にデバイスの回転を抑止させる。
回転を固定にして撮影を行わせたい場合などに有効。
環境
- Xcode6.4
- Swift 1.2
UIImagePickerControllerのサブクラス作成
回転の抑止は、UIImagePickerControllerを継承したサブクラスを作成し、そこに記載する。
★の場所が該当コード。
import UIKit import MobileCoreServices class CameraViewController: UIImagePickerController { // ★向きの自動を許可をさせない override func shouldAutorotate() -> Bool { return false } // ★サポートする向きを指定する(LandscapeRight:ホームボタンが右側) override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.LandscapeRight.rawValue) } // カメラの設定 func setupCamera() { self.sourceType = UIImagePickerControllerSourceType.Camera self.mediaTypes = [kUTTypeMovie] ... }
呼び出し元の記述
以下のようにして呼び出しを行う。
// カメラ起動 @IBAction func runCamera(sender: UIButton) { let picker = CameraViewController() // 作成したサブクラス picker.delegate = self self.presentViewController(picker, animated: true, completion: nil) } // UIImagePickerControllerDelegate(閉じる・保存する) func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { picker.dismissViewControllerAnimated(true, completion: nil) if let url = info[UIImagePickerControllerMediaURL] as? NSURL { UISaveVideoAtPathToSavedPhotosAlbum(url.path, self, "finishSaveVideo:didFinishSavingWithError:contextInfo:", nil) } } // 保存判定 func finishSaveVideo(videoPath: String, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutablePointer<Void>) { if (error != nil) { println("動画の保存に失敗しました。") } else { println("動画の保存に成功しました。") } }