2012-11-19 60 views
0

我想支持除主視圖控制器以外的所有視圖的所有方向。我似乎無法找到辦法做到這一點。某些視圖的Xcode iphone方向支持

我既可以支持所有視圖的方向,也可以支持整個應用的視圖。您如何支持整個應用程序中某些視圖的方向?

+0

是你的問題解決? – Rajneesh071

+0

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

+0

不,我,我不知道如何繼承最頂級的控制器。請指教。謝謝! – user984248

回答

1

我還沒有與需要採取行動,你描述方式的應用工作,但這裏是當你需要控制方向支持蘋果的文檔表明什麼:

動態控制是否發生旋轉時

有時您可能想要動態禁用自動旋轉。例如,對於 示例,如果要在短時間內完全禁止旋轉 ,則可以執行此操作。您必須暫時禁用想要手動控制 狀態欄位置的 方向更改(例如,當您調用 setStatusBarOrientation:animated:方法時)。

>如果您想要暫時禁用自動旋轉,請避免使用 操縱方向遮罩來執行此操作。請改爲在最頂端的視圖控制器上覆蓋shouldAutorotate方法 。在執行任何自動旋轉之前調用此方法爲 。如果它返回NO,那麼將禁止旋轉 。

來源:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html#//apple_ref/doc/uid/TP40007457-CH7-SW1

1

子類中最頂層的控制器。 例如你有一個導航控制器作爲最頂層控制器,那麼你只需要 子UINavigationController寫下面的代碼行中的子類

- (BOOL)shouldAutorotate 
{ 
    return [[self.viewControllers lastObject] shouldAutorotate]; 
} 

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
} 

現在的.m文件覆蓋方法- (BOOL)shouldAutorotate爲每個您項目中的控制器。 返回TRUE爲那些你需要做旋轉的控制器,並且爲那些你不需要旋轉的控制器返回FALSE

乾杯!!!!!

+0

你可以請提供一個這個實現的例子嗎?我似乎無法弄清楚它。謝謝 – user984248

+0

首先上面的一段代碼將在5.0之後工作,從5.0 - (BOOL)shouldAutorotate已經到來。我可以向您發送我在應用程序中使用的導航控制器的幫助器子類。 – Mihir

+0

好的。請發給我。 – user984248