2012-04-12 30 views
18

Tôi có một ứng dụng gồm nhiều bộ điều khiển chế độ xem ... trong tóm tắt dự án tôi đã đặt Hướng dọc theo hướng thiết bị được hỗ trợ duy nhất.Bạn có thể tắt xoay vòng trên toàn cầu trong ứng dụng iOS không?

Tuy nhiên, ứng dụng vẫn bị rối tung khi xoay sang một bên.

Câu hỏi của tôi là, có cách nào để vô hiệu hóa toàn cầu autorotation thông qua ứng dụng đại biểu hay một cái gì đó?

Hoặc tôi có phải đi vào tất cả các trình điều khiển chế độ xem của tôi và thêm phương thức "shouldAutorotateToInterfaceOrientation" không?

Chỉ cần không muốn bỏ lỡ thêm vào một hoặc một cái gì đó ...

Cảm ơn!

+1

Đã lâu rồi kể từ khi tôi thực hiện iOS, nhưng không có thứ gì bạn có thể đưa vào ứng dụng plist? Một cái gì đó về "định hướng được hỗ trợ" hoặc một cái gì đó như thế? –

Trả lời

6

trong phương pháp gốc view controller của:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

bộ 'trở NO';

điều này nên làm cho tất cả các Chế độ xem.

+4

nó không hoạt động cho tôi –

67

Trong Info.plist mở rộng "Định hướng giao diện được hỗ trợ" và xóa các mục Cảnh quan để làm cho ứng dụng của bạn chỉ chạy ở chế độ dọc.

12

Sau khi đấu tranh để đặt trong các phương pháp shouldAutorotatesupportedInterfaceOrientation của UIViewController, không thành công trong iOS6, tôi thấy hiệu quả nhất là đặt nó trong ứng dụng đại biểu.

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Tuy nhiên việc trả lại UIInterfaceOrientationMaskPortraitUpsideDown đã làm hỏng ứng dụng của tôi. Tôi không biết mình đang làm gì sai!

+2

Điều này cũng hoạt động đối với iOS 8. Làm việc hoàn hảo cho tôi kết hợp với cài đặt định hướng giao diện được hỗ trợ được đặt trong tệp 'Info.plist' của ứng dụng –

8

Có ba loại khóa định hướng Thiết bị tại đó trong info.plist ngay bây giờ.

  1. định hướng hỗ trợ giao diện (iPad)
  2. định hướng giao diện hỗ trợ (iPhone)
  3. định hướng giao diện được hỗ trợ

thứ ba một là tôi nghĩ cho các ứng dụng không phổ biến và nghỉ ngơi hai trên là dành cho iPad và iPhone.

Bạn nên dùng thử. câu trả lời

enter image description here

+0

Cảm ơn. Đây là điều duy nhất tôi cần làm để ép buộc chân dung chỉ cho cả iPhone và iPad. –

0

Haris Hussain của dường như bị phản đối bây giờ, khi iOS 6, nhưng có những phương pháp mới có sẵn để hạn chế/cho phép quay.

Sau đây là các phương pháp được liệt kê trong tiêu đề UIViewController:

// New Autorotation support. 
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0); 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0); 
// Returns interface orientation masks. 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0); 

Lưu ý rằng shouldAutoRotate dường như không có tác dụng nếu bạn khởi động ứng dụng trong một đã xoay nhà nước!

0

Nếu bạn đang hỗ trợ iPad, thì bạn KHÔNG nên bỏ chọn các hướng ngang, vì nó sẽ ngăn ứng dụng của bạn không được Apple chấp nhận trên App Store.

Để ngăn chặn quay trước khi ứng dụng cho thấy màn hình đầu tiên của bạn, đặt bên AppDelegate.m bạn

phương pháp này hoạt động và thử nghiệm trong iOS 7.1 ở trên.

// G - fix for ipad. 
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
Các vấn đề liên quan