2011-03-16 60 views
1

我需要開發一個iPad應用程序,它應該管理兩種方向模式(橫向和縱向)。 根據official Apple iOS documentation,有兩種方法可以繼續。iPhone定位管理:什麼是最有效的方法?

-The第一種包括在當接收到旋轉事件調節視圖元件。主要優點是我們只有一個ViewController - 第二個是爲每個方向顯示一個特定的ViewController。因此,我們有2個ViewControllers。

第二種方法似乎不錯,但我'怕通過,將需要的ViewController的數字。更重要的是,ViewControllers中的「數據同步邏輯」必須被複制(或與ViewController隔離)才能在兩個方向上使用。

我需要開發將包含許多「全定製元素」和許多ViewControllers中的應用。

如果任何人有意見或經驗反饋,這將非常感激;)

感謝的閱讀!

回答

3

第二種方式而應被:使用2個不同的視圖(一個用於肖像,一對橫向)和在willRotateToInterfaceOrientation:交換視圖控制器的視圖。無需複製您的數據邏輯。

何種使用方式?我會說:這取決於。

  • 如果lanscape和肖像模式的看法位置/大小區別僅在於,我用第一個(再加上你會得到的幀之間的變化很好的動畫)
  • 如果橫向和縱向太不同,我更喜歡第二個。
+0

你是對的,可能只有一個ViewController併爲每個方向使用2個「全局」視圖。 – ayorosmage 2011-03-16 20:15:03

+0

@alexandrebour你有第二種方式的例子嗎?如果你可以在這裏舉例,這將是非常好的。謝謝。 – NightFury 2013-01-02 10:43:35

+0

但無法爲不同視圖中的不同文本框設置相同的出口 – Warewolf 2013-05-15 10:02:48

1

我通常通過取autoresizing技術在視圖與視圖中的控制器willAutorotateToInterfaceOrientationwillAnimateRotationToInterfaceOrientation方法的實現合併的優點解決這個問題。

有了自動尺寸調整技術,您可以輕鬆地調整由蘋果公司提供的標準UI元素。如果你的UI元素沒有不可能的佈局,你也可以使用自動調整技術。您必須在父視圖控制器中將autoresizesSubviews屬性設置爲YES,併爲每個子視圖選擇自動調整行爲。例如,如果您希望調整大小以保持視圖居中,則可以在子視圖中應用autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin掩碼。

如果自動調整技術不能解決問題,那麼您需要分別在視圖控制器中實現- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration來調整每個衝突視圖的大小。如果您有「完全自定義元素」,則需要通過這種方式調整它們。

在我特別的經驗中,我更喜歡只有一個視圖控制器和一個視圖來處理所有的方向,並用這兩種技術來管理它們。

希望這可以幫助你!

+0

嗨Ruben,感謝您的經驗反饋;) – ayorosmage 2011-03-16 20:13:46

相關問題