2013-02-21 23 views
13

Uygulamam otomatik olarak düzeltilebilir, ancak yalnızca portre modunda gösterilecek ve bunlara nasıl ulaşacağını bilmeyen görünümlerden birine ihtiyacım var. Bir görünüm denetleyicisi için otomatik döndürmeyi önleme?

bu (diğer şeylerin yanı sıra) çalıştı ama söz konusu görünüm hala döner:

// ViewController.m 

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

birisi nazikçe yanlış ne yapıyorum işaret edebilir? Teşekkürler.

-edit-

O iOS 6.1 UINavigationController katılır

+0

Hangi SDK sürümleri için geliştiriyorsunuz? –

+0

http://stackoverflow.com/questions/12630359/ios-6-how-do-i-restrict-some-views-to-portrait-and-allow-others-to-rotate – msk

+0

iOS 6, üzgünüm. OP'yi güncelledim. – Robert

cevap

30

için var, UINavigationController ve override supportedInterfaceOrientations bir kategori oluşturun.

#import "UINavigationController+Orientation.h" 

@implementation UINavigationController (Orientation) 

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

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

@end 

Şimdi, (örneğin UINavigationController gibi) iOS konteynerler onlar AutoRotate gerekip gerekmediğini belirlemek için çocuklarını danışın yoktur.


1. Yeni bir dosya (kakao dokunmatik altında Amaç c- kategori)
2. Category ekle Bir kategori nasıl oluşturulur:
3. UINavigationController+Orientation.m

+0

Evet, bir "UINavigationController" var, ama itiraf etmeliyim alt sınıfta ne demek istediğini tam olarak bilmemek ama biraz okuma yapacağım. – Robert

+0

@Robert 'UINavigationController' üzerine bir kategori ekleyin. Düzenlemeyi gör –

+0

Bu ayrıca bir üst düzey için geçerlidir UITabBarController – Halpo

2
için yukarıdaki kodu ekleyin UINavigationController üzerinde Oryantasyon

Swift 3 versiyon kabul edilen yanıt:

extension UINavigationController { 

    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     // Change `.portrait` to whatever your default is throughout your app 
     return topViewController?.supportedInterfaceOrientations ?? .portrait 
    } 

    open override var shouldAutorotate: Bool { 
     return true 
    } 
} 
İlgili konular