2011-11-01 17 views

Trả lời

111

self.interfaceOrientation trả về UIInterfaceHướng dẫn, định hướng hiện tại của giao diện. Nó là một tài sản trong UIViewController, bạn có thể truy cập vào điều này chỉ trong các lớp UIViewController.

[[UIApplication sharedApplication] statusBarOrientation] trả về UIInterfaceHướng dẫn, định hướng hiện tại của thanh trạng thái của ứng dụng. Bạn có thể truy cập vào thuộc tính đó trong bất kỳ thời điểm nào trong ứng dụng của bạn. Kinh nghiệm của tôi cho thấy rằng đó là cách hiệu quả hơn để lấy định hướng giao diện thực sự.

[[UIDevice currentDevice] orientation] trả về UIDeviceOrientation, hướng thiết bị. Bạn có thể truy cập vào thuộc tính đó trong bất kỳ thời điểm nào trong ứng dụng của bạn. Nhưng lưu ý rằng UIDeviceOrientation không phải lúc nào cũng là UIInterfaceOrientation. Ví dụ: khi thiết bị của bạn ở trên một bảng đơn giản, bạn có thể nhận được giá trị không mong muốn.

+0

Xin cảm ơn, rõ ràng với tôi ngay bây giờ! –

+1

một câu trả lời khác liên quan đến định hướng giao diện - http://stackoverflow.com/a/3897243/194544 – beryllium

+0

+1, giải thích rất tốt :)) – mAc

23

[[UIApplication sharedApplication] statusBarOrientation] - giá trị này luôn bằng một trong bốn giá trị: chân dung, phong cảnh trái, ngang phải và dọc theo chiều dọc.

[[UIDevice currentDevice] orientation] - giá trị này tương đương với bốn giá trị và cũng: không xác định, mặt lên hoặc úp xuống.

[[UIApplication sharedApplication] statusBarOrientation] - là cách được ưu tiên hơn để có định hướng giao diện.

+0

Bên cạnh đó, '[[UIDevice currentDevice] định hướng] '" ... luôn trả về 0 trừ khi thông báo định hướng đã được bật bằng cách gọi beginGeneratingDeviceOrientationNotifications. " (Docs.) – Olie

+8

12 chứng đau nửa đầu và 5 vết loét sau đó, tôi có thể xác nhận rằng '[[UIApplication sharedApplication] statusBarOrientation]' là một cách đáng tin cậy và đơn giản hơn để phát hiện và quản lý các thay đổi định hướng. –

1

Tất cả các bộ điều khiển xem có chức năng này

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { 
      //fromInterfaceOrientation.isLandscape 
    } 

hoặc bạn có thể sử dụng định hướng thanh trạng thái

if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait { 
     // 
    } 

trình trong iOS 9 :)

Các vấn đề liên quan