2013-01-24 16 views
9

在iOS6中有AutoLayout,它是一個基於約束的佈局系統。我想這與Android的靈活的XML佈局有些相似。爲什麼有2個故事板時有AutoLayout?

我開始iOS6項目,並希望你AutoLayout。這個應用程序將是普遍的。它將有一些在兩個器件系列之間非常相似的觀點。其他人對iPad的看法將是iPhone視圖中的2個或更多控制器。

從我的理解,UIViewControllers可以設置與其他子UIViewControllers。這意味着有兩種成分可以在兩種設備中建立一個通用視圖。

所以我的問題是,爲什麼需要2個故事板?我可以看到iPad故事板上有一些額外的控件等。在兩種設備類型之間還有縮放字體大小和其他變量的問題。任何人都可以提供關於如何在2個故事板上不存在重複視圖的建議,並有效地使用AutoLayout來實現良好的通用應用程序?

非常感謝。

+0

你不能!你必須同時使用它。 – TonyMkenu

+0

僅僅因爲它是一個更大的設備並不意味着它只是使用相同的UI但更大。 iPhone和iPad之間的設備使用方式有所不同。 UI概念完全不同。 – Fogmeister

回答

8

iPad用戶界面往往不是iPhone用戶界面的簡單放大版本。有更多的屏幕空間可供使用,並且有定製的僅限iPad的界面元素(例如UISplitViewController)。

如果在你的情況下,不同的設備有非常相似的佈局,那麼是的,你可以使用一個佈局自動佈局,它可以正常工作。但是,在大多數情況下,我建議不要這樣做。更清楚的是隻有兩種佈局,每種設備一種佈局。

最終決定權由您決定。也許你可以嘗試單一的佈局策略,使用自動佈局,並看看你是否面對任何特定的問題。

+1

我希望我能再次+1。 – Fogmeister

+0

過了一段時間,但我結束了混合解決方案。我確實有一個iPad故事板來創建iPad佈局。故事板中的一些面板(UIViews)是空白的。我有一套MasterIPadViewController,MasterIPhoneViewController,如果設置了插座和選項,它可以從另一個故事板中巧妙地加載視圖。一些iPad VC擴展了iPhone,並將額外的功能添加到UI中。這確保了最大程度的代碼重用和最大的UI靈活性。 (60Hz是應用程序的名稱。) – dineth

+0

我在iOS和Android上工作。該片段和一些Java類層次結構的東西提供了更多的靈活性來重用東西。但是,是的,他們確實帶着一套額外的複雜性。我認爲我的下一個通用應用程序體系結構將有點不同。 – dineth

2

這是我的經驗,它可能會更容易讓你不使用故事板,並以編程方式製作一切,但這是更基於意見。

你的問題有點含糊,但我的意見是設置自動佈局的意見,如你所說,然後有一個使用這些意見的控制器。最終會發生的情況是,您將在控制器內查看視圖內的內容,這將允許您控制所有佈局,同時可以根據設備選擇和選擇所在的位置。

如果你給出一個更具體的例子來運行,它可能會有所幫助。說實話,這也是我感興趣的東西,我期待着看到其他想法。

+0

感謝您的回答。我做了一些示例項目來測試如何實現這樣的功能,並且我已經取得了一些成功。我認爲這應該是一篇完整的博客文章 - 我將在此撰寫和發佈摘要作爲答案。我已經能夠加載1個故事板。 – dineth