Saya hanya menggunakan Pusat Pemberitahuan:
Tambahkan variabel orientasi (akan dijelaskan di bagian akhir)
//Above viewdidload
var orientations:UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation
Tambahkan Pemberitahuan saat tampilan muncul
override func viewDidAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "orientationChanged:", name: UIDeviceOrientationDidChangeNotification, object: nil)
}
Hapus Pemberitahuan saat tampilan hilang
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceOrientationDidChangeNotification, object: nil)
}
Mendapat orientasi saat ini ketika notifikasi dipicu
func orientationChanged (notification: NSNotification) {
adjustViewsForOrientation(UIApplication.sharedApplication().statusBarOrientation)
}
Memeriksa orientasi (potret / lanskap) dan menangani acara
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
}
}
}
Alasan saya menambahkan variabel orientasi adalah karena saat menguji pada perangkat fisik, notifikasi orientasi dipanggil pada setiap gerakan kecil di perangkat, dan tidak hanya saat itu berputar. Menambahkan pernyataan var dan if hanya memanggil kode jika dialihkan ke orientasi yang berlawanan.
UIViewController
. Lihat bagian berjudul "Menangani Rotasi Tampilan. Ini menjelaskan apa yang harus Anda lakukan.