2013-10-26 21 views
12

我的應用可以自動旋轉,但我需要其中一個視圖才能以縱向模式顯示,並且不知道如何實現此目的。 我想這(除其他事項外),但有問題的看法仍然旋轉:如果您出示您的視圖控制器作爲一個模式視圖控制器防止一個視圖控制器ios7 autorotate?

-(BOOL)shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

回答

6

supportedInterfaceOrientations會工作。如果將它作爲導航控制器堆棧的一部分呈現,它將不起作用。如果你希望你的觀點提出了模態,但導航控制器內(有導航項目,例如)我做的解決方案是繼承UINavigationController並覆蓋在我的子類的supportedInterfaceOrientations方法。

+0

是否可以添加一些代碼來顯示您的解決方案? – rkh

+0

@rkh你需要編寫一個覆蓋一個函數的子類的代碼? –

+0

不,我只是想解釋你的解決方案,維克多「在代碼」,因爲他似乎是一個新的用戶......我很好:) – rkh

15

將該溶液介紹如何控制對單個視圖控制器取向,只要它們是由導航控制器管理。

在Xcode中5,創建類型的新文件「的Objective-C類」,設置它的「類別」爲「旋轉」,然後選擇「UINavigationController的」作爲「類別的」。

一個新的文件夫婦將出現在項目中,具有以下名稱: 的UINavigationController + rotation.h 的UINavigationController + rotation.m

在.m文件,寫入以下代碼:

- (BOOL) shouldAutorotate 
{ 
    return [[self topViewController] shouldAutorotate]; 
} 

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

這樣,導航控制器將讓當前頂視圖控制器確定方向策略。

然後,在由導航控制器管理的每個特定視圖控制器,你可以覆蓋兩個方向相關的方法。

舉例來說,如果一個特定的視圖控制器應僅在縱向顯示:

- (BOOL) shouldAutorotate 
{    
    return NO; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

確保所期望的方向是那些在項目部署信息集之一。 希望這是足夠詳細的,可以幫助。

+0

完美地工作 - 謝謝! – wayneh

+0

很好的答案,這是一個非常好的工作! – EridB

相關問題