0

我有一個iOS 6 iPad應用程序,其中大多數ViewControllers都有其導航控制器。在所有這些觀點中,我希望方向只能是風景,這很好。有一個視圖控制器雖然沒有導航控制器 - 我只是在導航控制器的頂部視圖控制器的頂部打開它的視圖,但它不是一個模式。我希望用戶能夠在該視圖控制器上更改屏幕的方向,但保持其餘所有視圖的橫向。這是我做的:ViewController中沒有導航控制器的屏幕方向

導航控制器的子類:

-(NSUInteger)supportedInterfaceOrientations { 
return UIInterfaceOrientationMaskLandscape; 

} 

-(BOOL)shouldAutorotate { 
    return UIInterfaceOrientationIsLandscape(self.interfaceOrientation); 
} 

這裏是爲特定視圖控制器相同的方法,我想有橫向和縱向:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAll; 
} 

- (BOOL)shouldAutorotate { 
    return YES; 
} 

由於這個視圖控制器沒有導航控制器我確信這會解決問題。但由於某種原因,我仍然無法翻轉此視圖控制器中的屏幕。下面是我表明視圖控制器的方式 - 也許這是這背後的原因是:

UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
[[window.subviews objectAtIndex:0] addSubview:previewView]; 
+0

我想,我表現出這種觀點的方式必須是這背後的一個原因,所以在這裏我的問題寧願是有可能有這些觀點都有獨立的方向配置? – jahsiotr

回答

0

事實上,你顯示這個特殊的視圖控制器的方式使你的視圖無法改變方向,因爲當設備改變方向時,它會詢問你的關鍵窗口的rootController它是否可以orie ntate或不,在你的情況下,你返回風景,所以你的窗口只支持風景模式。

所以,也許你應該從你的navigationController沒有動畫呈現它。比在您的特殊視圖控制器中實現- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

延伸閱讀:Understand ViewController Orientation

0
- (NSUInteger)supportedInterfaceOrientations { 
return UIInterfaceOrientationMaskAll; 
} 

更改爲

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 

If you have more doubts 

請參閱本 How can I display one UIView in landscape?

+0

@jahsiotr在視圖控制器中更改此位置,您要更改方向 – iCoder

+0

這不會阻止View Controller更改方向嗎?我需要的是讓用戶在該特定的視圖控制器上改變方向,並且不要讓其他所有視圖控制器都放棄 – jahsiotr