2015-02-07 74 views
0

我試圖做到的,是基於在佈局一個4.7" 屏幕在iPhone上的自適應視圖。iOS自適應視圖;適應性約束?

現在,實現這一目標是證明困難的,這也是我的第一個制約經驗。

我不希望使用自由格式,因爲它似乎對我來說很陌生,我的目標不是iPad。

此外,當前的項目我不會允許我切換到一些自由形式的viewcontroller大小原因。

iPhone 4 based on 4.7" layout without constraints iPhone 4 based on 4.7" with constraints top/bottom iPhone 6 based on 4.7" with constraints

第一是iphone 4而不基於4.7" 約束佈局 第二是iphone 4基於4.7" 約束佈局 第三是什麼iphone 6佈局顯示爲。

我想保持相同的一般距離,但縮小一切以匹配較小的屏幕尺寸的理想。 (距離明智,不按鈕/文字大小等)

所以你可以看到我實現了一個結果不管,但我的頂部標籤是從頂部測量,按鈕是從底部,我嘗試的任何其他將其餘按鈕推出。

但是,我怎麼能編程實現這一

if (iphone screen is 4.7") { 
    bottom constraint is 95px.height; 
} else 
if (iphone screen is 4.0") {  
    bottom constraint is 50px.height; 
} else 
if (iphone screen is 3.5") { 
    bottom constraint is 10px.height; 
} 

這是我計劃如何讓我的應用程序適應,但我需要的約束是自適應的了。如果我接近這個錯誤,請指向正確的方向。

回答

1

有很多方法可以解決這個問題。一種方法是使用約束的乘數和常數來爲這些屏幕尺寸提供正確的間距。如果解決了這兩個公式,

480X + Y = 470(480 - 10你想要的底部約束)和

667x + Y = 572(667 - 95你想要的底部約束)

你得到x的值爲0.5455,y的值爲208.2。如果你將這些插入到其他方程(568x + y = 518)中,它也會非常接近。因此,對於底部的約束,你想擁有

按鈕底部=上海華底部* 0.5455 + 208.2

您可以通過添加一個底部約束到您的底部按鈕(或標籤),並編輯,使這個在IB改變乘數和常數值。你可以用你的頂視圖做同樣的事情,使它與屏幕大小成正比,但要注意你實際上需要將約束限制在超級視圖的底部,因爲superview.top的值是0,所以使用乘數將會你沒有好處。要在所有視圖之間平均分配空間,最好的方法是使用間隔視圖(如果您在SO上均勻搜索「空間視圖」,則會找到解釋這些視圖的一些答案)。

另一種方法可能是使用表視圖而不是單個標籤和按鈕。這種方法的優點是視圖(這種情況下的單元格)會自動間隔均勻(基於行高)。您仍然可以像上面概述的那樣給頂部和底部的表格視圖約束,或者只是垂直居中,並使其高度與超級視圖的高度成比例。我認爲這可能是更好的,當然也更容易。如果您使表格視圖不滾動,並且沒有單元格分隔符,它將看起來就像另一種方法。

+0

感謝您的幫助,非常感謝! – user2415313 2015-02-07 20:25:04