2014-10-20 102 views
5

我想問一個關於高度混淆(至少對我來說)主題 - Xcode 6中的Size Classes的問題。我一直試圖充分理解所有這些工作原理,但它是對我仍然不清楚。Xcode 6大小類

在Xcode 6和新的iPhone之前,一切都非常簡單。對於非視網膜和視網膜,顯示器使我們能夠以320x480的分辨率(或更高設備的568分辨率)工作。標準和@ 2x資產非常合理。然而,現在我們擁有相同比例的大屁股屏幕(幾乎相同),但工作區域不再​​一樣。

大小類應該使事情成爲可能,以便將其全部放在一個故事板中。但是請等待...... iPhone 6使用@ 2x資產,據我的理解,這意味着該設備上的圖形看起來比iPhone 5/5S上的要小。 iPhone 6 Plus使用@ 3x資產,這再次看起來不會一樣。似乎不可能做出,例如,某個按鈕的大小與屏幕的整個寬度有關。除非我們編碼,否則會導致Size Classes無用。

我是否正確地理解事物,或者我是否錯過了某些東西?聽到你們如何看待它,真是太棒了。也許你知道一些好的教程?我沒有發現任何可以解釋我的疑惑的東西。

在此先感謝!

+0

你明白了。這就是我必須做的。通過代碼手動使按鈕變大/變小,具體取決於它是哪個iPhone。正如你所注意到的那樣,在iPhone 5/6模擬器中看起來很完美的按鈕在iPhone 6 plus中看起來很小。因此,困境 – 2014-10-20 15:43:09

+0

感謝您的評論,山姆。看起來像iPhone 6會遇到很多麻煩,並且在Interface Builder中創建佈局沒有明智的方法,除非確切的尺寸和間距不是很重要。讓我想起Android :) – 2014-10-20 18:06:10

回答

4

你可以做很多你在談論這裏使用不同的方法組合什麼:

  1. 大小類不同類型的設備涵蓋大部分在UI配置大規模的變化(例如,iPad和iPhone之間的差異)。例如,您可以使用它來更改是否顯示側邊欄。

  2. Autolayout規則是特定於個別大小類。您可以爲不同的大小類添加不同的自動佈局規則,以調整佈局(例如,您可以按照這種方式在水平行按鈕和堆疊的按鈕列之間切換,因爲您現在可以針對不同大小的類使用不同的自動佈局規則)。一旦您意識到您不再需要爲所有大小類使用相同的自動佈局規則,此技術就非常強大。

  3. 資產目錄自動爲不同支持的分辨率等預先呈現圖形。還要注意的是,因爲許多舊設備實際上並不支持iOS 8,所以除非需要廣泛的向後兼容性,否則不需要再包含真正的低分辨率版本(並且不是所有的大小類功能都可用無論如何)。我剛剛創建了僅支持iOS 8的應用程序的新版本,因爲舊版本的用戶只會獲得以前版本的應用程序。

  4. 可調整大小的圖像:您現在可以在圖像中指定可調整大小的區域,以便控制在應用於像UIButtons等可能會根據Autolayout規則更改大小的事物時它們被拉伸的方式。 (這是Android已經有一段時間的功能,因此在iOS上歡迎)。這意味着,您可以在更多種類的屏幕尺寸上使顯示效果更好,而無需使用單獨的圖像或對尺寸的精確控制的UI元素。

  5. 視圖控制器中的編程代碼來調整任何你無法實現的方法。

雖然這是真的,你沒有相當的罰款細粒度控制哪些設備顯示什麼確切的佈局,大小班,我發現,這是不是真的那麼大一個問題,因爲你可能會認爲,爲尺寸等級讓您的視圖控制器可以非常無縫地適應不同的設備。自動佈局和大小類的組合非常強大。它實際上可能是一件好事,因爲每當Apple推出不同的屏幕尺寸時,這意味着更少的新手動配置。現在轉換有點痛苦,但從長遠來看可能值得。你只需要考慮一下你如何設置一些不同的東西。它有點像Android,他們一直不得不面對很多不同的設備屏幕尺寸和分辨率,但它也是平臺的自然演變,您無法真正精確地設計每個物理設備作爲一個實際的問題(你仍然應該在模擬器上測試它們)。

+0

嘿,非常好的一點!非常感謝你列出所有這些! – 2015-02-06 09:10:52

0

大小班是不是有隻適應一個更大的屏幕尺寸,他們在那裏爲完全不同的佈局。就像在iPhone上一樣,您可能會顯示一個項目,然後點擊以進入下一個屏幕以獲取更多信息,但在同一屏幕上顯示的iPad上。

對於小的調整,您使用自動佈局,每個班級大小不同的佈局,並在每個大小類不同的屏幕尺寸由自動佈局處理。