2

我有一個UINavigationController,它創建了一個UIViewController的實例,並將另一個UIViewController設置爲根。然後我介紹導航控制器,一切正常。在iOS7中禁用UINavigationController的旋轉

用戶旋轉設備時出現問題。我所有的控制器(包括根和不包括UINavigationController)都執行shouldAutorotate並返回FALSE

不知何故,我的看法仍然旋轉。我們來到我的問題的中心。我像這樣創建和呈現導航控制器:

AwesomeViewController *controller = [[AwesomeViewController alloc] init]; 

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 

[self presentViewController:navController 
        animated:YES 
       completion:NULL]; 

這是很簡單的,你可以看到。

  1. navController缺少了shouldAutorotate設置爲FALSE,這就是爲什麼它的旋轉,對嗎?

  2. 如何鎖定縱向?

  3. 可不可以不做做一個荒謬的子類是這樣的:

    @interface LockedRotationNavigationController : UINavigationController 
    @end 
    
    @implementation LockedRotationNavigationController 
    - (BOOL)shouldAutorotate { return NO; } 
    @end 
    

什麼實際上,我尋找的是如何UINavigationController的禁止旋轉沒有子呢?

該物業是readonly,所以我不知道如何做到這一點。

+0

是否要在應用程序中全局禁用旋轉或僅針對此特定導航控制器禁用旋轉? – RaffAl

+0

全球性也會很好。如果我通過'[[NSNotificationCenter defaultCenter] addObserver:self selector'註冊它們,我還能得到有關旋轉的通知:@selector(orientationChanged :) name:UIDeviceOrientationDidChangeNotification object:nil];'?那就可以了。 – Majster

+0

哦,請張貼它作爲答案,我可以接受它:) – Majster

回答

2

Info.plist在您的應用程序關閉全局旋轉擴大Supported interface orientations和刪除景觀項目,使您的應用程序只有在肖像模式下運行。

enter image description here

或者你可以在Xcode中這樣只需要選擇支撐取向:

enter image description here

您還可以通過在你的視圖控制器實現shouldAutorotateToInterfaceOrientation方法以編程方式鎖定旋轉。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return YES; 
} 
相關問題