2012-11-30 36 views
0

我爲我的iPhone應用程序轉換爲iPad和使用UISplitViewController shouldHideViewController爲iOS 4.3

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return NO; 
} 

保持雙窗格佈局在任何時候。不幸的是,這是在iOS5中引入的。我已經提到過在iOS 5之前以編程方式進行此操作,但沒有設法找到任何示例代碼。有沒有人有任何指針?

回答

1

這方面有點滑坡,因爲蘋果已經調整在6.0

爲了不被翻轉的5.0,5.1的SPLITVIEW和旋轉,但如果你可以將你的應用需要5.0,它將是實現你的目標的最簡單的方法。

如果你想這樣做你自己,你基本上需要劫持popover並在你自己的框架中重新實現。有一種方法叫做:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)newpopoverController 

在這個方法中,你可以抓住viewController並存儲它。

那麼當在縱向使用感:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

,你需要抓住的細節視圖,並對其進行調整 - 使房間左側的新幀,您填寫使用你抓住了視圖控制器在前面的方法中引用。

它的一個雜耍的行爲。

如果你真的,真的需要保持4.3兼容性和你想要的功能,我建議你看一下開源的SPLITVIEW控制器稱爲MGSplitViewController馬特Gemmell - 你可以在這裏找到:https://github.com/mattgemmell/MGSplitViewController

他的實現是相當不錯的,不僅會給你這個功能,還有其他幾個選項與屏幕上的視圖位置有關。

現在這裏是滑坡開始的地方,Matt幾年來沒有更新代碼(雖然有一些叉),並且在您向前移動應用程序時可能難以維護。

如果沒有別的,它包含的代碼完全符合你想要做的事情,所以這將是一個很好的參考來幫助你的項目。

對不起,我無法提供完整的配方,但實際上,無論您使用它還是僅將其用作參考,該庫都應該有所幫助。

祝你好運

+0

綜合反應 - 謝謝。我會研究這個github項目,但可能會堅持目前的策略,即爲4.3落後者提供像iPhone這樣的單視圖佈局。再次感謝。 – thesimm