私は単に通知センターを使用します:
方向変数を追加します(最後に説明します)
//Above viewdidload
var orientations:UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation
ビューが表示されたときに通知を追加する
override func viewDidAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "orientationChanged:", name: UIDeviceOrientationDidChangeNotification, object: nil)
}
ビューが消えたときに通知を削除する
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceOrientationDidChangeNotification, object: nil)
}
通知がトリガーされたときに現在の向きを取得します
func orientationChanged (notification: NSNotification) {
adjustViewsForOrientation(UIApplication.sharedApplication().statusBarOrientation)
}
向き(縦/横)をチェックし、イベントを処理します
func adjustViewsForOrientation(orientation: UIInterfaceOrientation) {
if (orientation == UIInterfaceOrientation.Portrait || orientation == UIInterfaceOrientation.PortraitUpsideDown)
{
if(orientation != orientations) {
println("Portrait")
//Do Rotation stuff here
orientations = orientation
}
}
else if (orientation == UIInterfaceOrientation.LandscapeLeft || orientation == UIInterfaceOrientation.LandscapeRight)
{
if(orientation != orientations) {
println("Landscape")
//Do Rotation stuff here
orientations = orientation
}
}
}
方向変数を追加する理由は、物理デバイスでテストするときに、デバイスが回転するときだけでなく、デバイス内のすべての小さな動きで方向通知が呼び出されるためです。varおよびifステートメントを追加すると、コードが反対の向きに切り替わった場合にのみコードが呼び出されます。
UIViewController
。ビューRotations`の取り扱い」の項を参照してくださいそれはあなたが何をすべきかを説明します。。