2015-01-04 56 views
1

所以,這裏有一個棘手的問題。我正在研究一款僅適用於iPhone 4s,5/5s/5c和6/6 Plus的僅限肖像應用。不幸的是,爲了使用戶界面與之前列出的設備完全兼容,我在使用自動佈局時遇到了一些麻煩。在複雜視圖的界面生成器中使用自動佈局

這裏的UI應該怎麼樣子(這是我使用爲其他屏幕尺寸的基準的iPhone 6加)截圖:

我有一個338x338點blueCircle,一個180x180紅圈,一個118x118 greenCircle,一個84x84 purpleCircle,最後是一個50磅高的adBanner。我希望實現的結果是擁有一個尊重這些視圖尺寸的iPhone 6 Plus用戶界面,以及適用於所有其他用戶界面的正確縮小的UI;除此之外,我會讓用戶付費刪除底部的廣告橫幅,因此我需要相應地調整UI(將橫幅的垂直間距設置爲橫幅並將其高度設置爲0也許?)。我使用Interface Builder搞混了,結果我得出了一個體面的 - 不是很精確的結果。拿一個iPhone 4S的屏幕上看看UI:

它看起來不錯,但有大問題。在界面生成器中,我正在使用與iPhone 6 Plus相同寬度的自由形式ViewController(414點),並在其上添加了以前列出的幀大小的所有圓視圖。舉一個例子,讓我們暫時忽略所有其他約束,以專注於寬高比的約束:在338x338 blueCircle上,我添加了寬高比約束,在180x180 redCircle上也是如此。然後我控制 - 從redCircle拖動到blueCircle並再次點擊高寬比,以便它相應地調整到blueCircle。正如我所說的結果是不準確的,因爲如果我println()redCircle的框架,控制檯會說它的寬度等於175.666666666667(而不是180)點。

Here's該項目讓你可以自己檢查一下。我相信它的價值超過千言萬語。我在自動佈局方面不是很擅長,並且我確信我會造成太多無用的限制。我能做些什麼來改善我的佈局?

+0

它是否需要自動佈局?在通過代碼佈局時,這樣的事似乎更容易......但也許這只是我的看法。 - 不幸的是,我對自動佈局也不是很熟悉。 – Cabus

+0

我想你會需要比自動佈局允許的更多邏輯。我會研究你可以使用的最簡單的約束條件,然後在視圖加載時用代碼調整它們。 可以在代碼中引用約束,就像您可以使用視圖本身一樣(控件拖動到您的代碼)。我已經做到了這一點,以便巧妙地解決一些限制,讓事情恰到好處。 例如,如果您不滿意寬度爲175.66667,那麼在代碼中,您可以在做一些舍入後調整約束。 –

+0

目前我沒有在我的實際項目中使用自動佈局。我只是檢查視圖框架以查看應用程序在哪個設備上運行。當由於背景調用/導航/音頻而導致狀態欄高度增加時,界面更改其高度時,我遇到了這種方法的一些問題。 – lucamegh

回答

0

您需要將所有圓視圖的高度和寬度設置爲與其父視圖成比例。 我將藍色視圖的高度設置爲0.5,與其父視圖成比例,其寬度將與其自身的縱橫比爲1:1 對所有其他視圖重複相同,並在視圖之間應用垂直間距和水平間距

這是它的外觀上iPhone 4

enter image description here

這是它的外觀上iPhone 6加

enter image description here

相關問題