2013-10-26 13 views
12

Ứng dụng của tôi có thể tự động chia sẻ nhưng tôi cần một trong các chế độ xem chỉ hiển thị ở chế độ dọc và không biết cách đạt được điều này. Tôi cố gắng này (trong số những thứ khác) nhưng quan điểm trong câu hỏi vẫn xoay:Ngăn chặn autorotate cho một bộ điều khiển xem ios7?

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Trả lời

6

supportedInterfaceOrientations sẽ làm việc nếu bạn giới thiệu bộ điều khiển xem của bạn khi một bộ điều khiển xem phương thức. Nó sẽ không hoạt động nếu bạn trình bày nó như một phần của ngăn xếp bộ điều khiển điều hướng. Nếu bạn muốn khung nhìn của bạn được trình bày một cách bình thường nhưng bên trong một bộ điều hướng (ví dụ như có các mục dẫn hướng), giải pháp tôi đã làm là phân lớp UINavigationController và ghi đè các phương thức supportedInterfaceOrientations trên lớp con của tôi.

+0

Có thể thêm một số mã hiển thị giải pháp của bạn không? – rkh

+0

@rkh Bạn cần mã để tạo một lớp con ghi đè một hàm? –

+0

Không, tôi chỉ muốn giải thích giải pháp của bạn cho Victor "trong mã" vì anh ta có vẻ như một người dùng mới ... Tôi tốt :) – rkh

15

Giải pháp này giải thích cách điều khiển hướng trên các bộ điều khiển chế độ xem riêng biệt, miễn là chúng được quản lý bởi bộ điều khiển điều hướng.

Trong Xcode 5, tạo tệp mới thuộc loại "Mục tiêu-C", đặt "Danh mục" thành "xoay vòng" và chọn "UINavigationController" là "Danh mục trên".

Một vài tập tin mới sẽ xuất hiện trong dự án này, có tên gọi sau đây: UINavigationController + rotation.h UINavigationController + rotation.m

Trong tập tin .m, hãy viết đoạn mã sau:

- (BOOL) shouldAutorotate 
{ 
    return [[self topViewController] shouldAutorotate]; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return [[self topViewController] supportedInterfaceOrientations]; 
} 

Bằng cách này, bộ điều khiển điều hướng sẽ cho phép bộ điều khiển xem trên cùng hiện tại xác định chính sách định hướng.

Sau đó, trong mỗi bộ điều khiển chế độ xem cụ thể được quản lý bởi bộ điều khiển điều hướng, bạn có thể ghi đè lên hai phương pháp liên quan đến định hướng.

Ví dụ, nếu một bộ điều khiển xem cụ thể sẽ xuất hiện trong chỉ hướng dọc:

- (BOOL) shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Hãy chắc chắn rằng định hướng mong muốn là một trong những thiết lập trong thông tin triển khai dự án. Hy vọng điều này là đầy đủ chi tiết và có thể giúp đỡ.

+0

Hoạt động hoàn hảo - cảm ơn! – wayneh

+0

Câu trả lời hay, đó là một công việc thực sự tốt đẹp! – EridB

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