2014-12-17 16 views
15

Tôi có một ứng dụng toàn cầu đang được phát triển trong iOS8 (XCode 6.1.1). Nó sẽ hỗ trợ tất cả 4 hướng (trái, phải, chân dung & lộn ngược).iOS 8 hướng ngược xuống, tùy chọn XCode được bật, vẫn không hoạt động

Vấn đề là, mặc dù trong XCode bốn tùy chọn cho hướng được hỗ trợ được chọn, chỉ còn lại, phải & chân dung đang hoạt động bình thường. Vì vậy, có một lỗi trên XCode hoặc iOS8? My info.plist hiển thị tất cả các hướng được hỗ trợ, nhưng khi tôi chạy ứng dụng trên trình mô phỏng hoặc trên thiết bị, nó không 'lật' hướng khi nó lộn ngược. (PS: nó là một ứng dụng duy nhất, nó không có bất kỳ bộ điều khiển điều hướng nào).

Cảm ơn!

Cleverson

Trả lời

14

Vâng, tôi đã tìm ra mục đích của các tùy chọn về cấu hình dự án ... Trong các tùy chọn bạn đang nói "hỗ trợ ứng dụng của tôi những định hướng" chứ không phải "ứng dụng của tôi phải sử dụng bốn tùy chọn "... Vì vậy, trên iPhone, bạn phải nói rằng một ViewController cụ thể hỗ trợ tất cả các định hướng (các upsidedown không làm cho parte của định hướng mặc định, vì một lý do mà tôi không biết) ... Mã nên được như thế này để hỗ trợ tất cả các định hướng:

override func supportedInterfaceOrientations() -> Int{ 
    return Int(UIInterfaceOrientationMask.All.rawValue) 
} 
+1

Không hoạt động như iOS 9 beta (Xcode beta 4) - mặc dù tôi đã sửa chữ ký để trả về một giá trị kiểu 'UIInterfaceOrientationMask' (nếu không nó sẽ không biên dịch). –

+1

Không hoạt động trên Xcode 9, có vẻ như chức năng đã biến mất hoàn toàn. – codehearted

+0

Có lẽ khung công tác và thay đổi Swift 4 ... Tôi sẽ kiểm tra xem chúng ... – Cleversou

13

với Swift 2.1, bạn có thể đơn giản hóa @ câu trả lời Cleversou để:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask 
{ 
    return .All 
} 

Với Swift 2,3

override var supportedInterfaceOrientations : UIInterfaceOrientationMask { 
    return .all 
} 
+1

Hấp dẫn, cảm ơn. Thật thú vị, có vẻ như bạn chỉ phải làm điều đó trên KIỂM SOÁT XEM LỚP NHẤT CỦA BẠN. Bạn nghĩ rằng, bạn phải làm điều đó "tất cả các con đường xuống". – Fattie

5

Nếu bạn đang chạy bên trong một bộ điều khiển chuyển hướng hoặc tab điều khiển thanh, bạn sẽ cần phải làm như ghi đè lên nhau trong lớp con của bạn hoặc ghi đè lên tất cả các trường với một phần mở rộng:

extension UINavigationController { 
    override public func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return .All 
    } 
} 

extension UITabBarController { 
    override public func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return .All 
    } 
} 

chỉnh sửa: như của Swift 3.0/iOS 9 (và có thể sớm hơn) này sẽ là:

extension UINavigationController { 
    override open var supportedInterfaceOrientations : UIInterfaceOrientationMask  { 
     return .all 
    } 
} 

extension UITabBarController { 
    override open var supportedInterfaceOrientations : UIInterfaceOrientationMask  { 
     return .all 
    } 
} 
+0

Tuyệt vời, hoạt động như một sự quyến rũ. Cảm ơn! –

+0

Tuyệt vời. Nhưng dường như không áp dụng cho màn hình khởi chạy. – claude31

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