2012-10-19 73 views
0

我想我的UIViewController可以自動旋轉,但只是它,而不是任何其他的uiviewcontroller。這個UIViewController被呈現在UINavigationController中,它不能自動旋轉。 此代碼適用於iOS 5和4,但不適用於iOS6。自動化不適用於iOS6

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return (YES); 
} 

- (BOOL)shouldAutorotate 
{ 
    return (YES); 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return (UIInterfaceOrientationMaskAll); 
} 

THX的幫助:)

回答

2

你繼承你的UINavigationController,實現你在這個子類以上的有旋轉的方法。然後,您可以有條件地返回YES/UIInterfaceOrientationMaskAll只有當你的旋轉視圖控制器是可見的,這樣的事情:

shouldAutorotateToInterfaceOrientation:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]]) 
return (YES); 
else 
return (toInterfaceOrientation == UIInterfaceOrientationPortrait); 

supportedInterfaceOrientations:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]]) 
return (UIInterfaceOrientationMaskAll); 
else 
return (UIInterfaceOrientationPortrait); 

,但你又不得不這樣做在您的導航控制器中,而不是其子視圖控制器。

0

iOS 6只詢問「最根本」的視圖控制器關於旋轉。這將不得不是你的UINavigationController(實際上是這樣的一個子類,所以你有放置旋轉委託方法的地方),因爲UINavigationController在你的其他控制器下。還要確保它被設置爲窗口的根視圖控制器。