0

在我的應用程序中,大多數視圖在用於小型設備(例如iPhone縱向)和大型設備(例如iPad全屏)上時都存在主要的UI設計差異。基本架構保持不變,但每個View Controller需要顯示一組非常不同的UI元素。如何根據iOS 9中尺寸等級的變化來交換視圖控制器?

我可以通過根據大小類安裝和卸載元素和自動佈局約束來響應Interface Builder中的大小更改,但這樣會非常笨重和易碎。

在你們古時(2014年),蘋果公司的建議是:

如果你想提出不同的基於設備是否處於縱向或橫向相同的數據,這樣做的方法是使用兩個獨立的視圖控制器一個視圖控制器應該管理主要方向(通常是縱向)中的數據顯示,而另一個視圖控制器管理以替代方向顯示數據。

儘管尺寸等級的出現,這給我的印象仍然是我的特殊設計的最佳解決方案(記住採取規模類和拆分視圖,幻燈片式的責任。)

問題1:在什麼點我的應用程序應該檢測到特徵的變化?

問題2 :(假設我已經從故事板加載了一個備用視圖控制器)來響應特性變化,我應該如何最佳地轉換/呈現備用視圖控制器?

我問同樣的問題在這裏問:Adaptive swapping of View Controllers in response to Size Class Trait changes iOS 9

因爲沒有人回答了原來的問題。

回答

0

如果你在談論特質運行期間發生變化,例如旋轉設備和iPad的多任務處理,可以中使用viewWillTransitionToSize(見this question示例代碼),並調整視圖層次(含動畫,如果你喜歡)這種方法。只需使用普通視圖和視圖控制器演示方法來添加/刪除所提供的控制器或子控制器及其視圖。

如果您在發佈時間(iPad vs iPhone)中討論特質更改,只需爲這兩個設備創建一個不同的故事板或根視圖控制器,並將其設置在您的應用程序代理中。儘管如此,這種方法的缺點是不能爲橫幅上的大尺寸iPhone提供iPad般的體驗。


我想挑戰的東西,你說,雖然:

我可以通過安裝根據大小等級和卸載元件和自動佈局約束在Interface Builder中尺寸的變化做出反應,但這會非常笨重和脆弱。

的Xcode 6和後支持「統一故事板」該文檔描述像這樣:

故事板可以添加或基於尺寸類視圖控制器顯示在刪除視圖和佈局限制。與其保持兩個單獨(但相似)的故事板,您可以爲多個尺寸類製作單個故事板。首先,使用通用界面設計故事板,然後根據不同的尺寸類別對其進行定製,使界面適應各種形式的優勢。

Xcode 8使設計這些高度自適應的視圖變得特別容易。您可以切換到特定尺寸特徵的編輯模式,甚至可以預覽視圖控制器在各種設備上的外觀。在繼續沿着目前的道路走下去之前,我鼓勵你深入瞭解Xcode 8的改進,如果你還沒有看到你是否可以爲你的用例製作統一的故事板。

+0

感謝您的回答亞倫。我忘了提一件事。我對iPad的看法與iPhone上的相同觀點不共享任何常見的UI元素。它是一個完全不同的觀點。 – user3158704

+0

在這種情況下,聽起來像統一的故事板不起作用。但它也聽起來像它可能是一個令人困惑的應用程序:) –