2013-09-29 25 views
0

我有一個很老的應用程序,它與iOS 3.2+設備(包括iPad和iPhone)兼容。我有一個很大的問題使它與iOS 7兼容!iOS 3.2到iOS 7界面方向不一致

事實上,早在ARC,故事板以及我們現在很喜歡玩的所有語法糖之前就已經寫過了。而且我很難理解一些界面方向問題:

對於iPhone,應用程序只在橫向上可見...沒有與主ViewController問題。但設置之一(一個簡單的ViewController在裏面有一個UITableView)總是顯示在肖像中!無論我設置的屬性和我寫的方法如何。

.plist我只支持方向LandscapeLeft和Right。在設置視圖控制器,我有那些方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation) || (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone); 
} 

- (BOOL) shouldAutorotate { 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)?UIInterfaceOrientationMaskLandscape:UIInterfaceOrientationMaskAll; 
} 

但真正困擾我的是,當我顯示self.interfaceOrientation它說景觀(在viewWillAppearviewDidAppearviewWillLayoutSubviews)。

但最奇怪的是,狀態欄是在景觀,在縱向視圖控制器!

(當然,這個問題似乎無論在設備和仿真器)

因此,如果有人可以幫助將回到那個所有的ViewController景觀。提前致謝!

+0

如果有人在iOS 3(或4)上使用它,並且您是否應該繼續支持這些版本,您是否有任何分析? – Wain

+0

是的,不幸的。但是如果你有一個適用於iOS 5+的解決方案,我很高興聽到它,我將把它帶回iOS 4 -... – Zaphod

+0

你說你的plist只是表示風景模式。你也不需要在那裏支持肖像嗎?然後通過視圖控制器指定允許的方向視圖控制器。 – Rob

回答

0

終於,我終於找到了!!!

問題是(我仍然不知道爲什麼)由於我在ViewControllers(舊的iOS 3方式)之間切換的方式造成的。

所以要糾正,如果測試方法presentViewController:animated:completion可用(上帝保佑respondsToSelector:),我可以使用它,當我可以。

問題解決!