2014-09-02 131 views
-1

我正在創建一個通用的應用程序。現在我想在屏幕上放置兩個按鈕:Autolayout設計適應iPhone 3.5英寸和iPhone 4英寸屏幕尺寸

Placement of two buttons

我用自動佈局嘗試過和Interface Builder(iOS版設計完全相同),但我只設法適合在一個屏幕尺寸的按鈕(如3.5英寸顯示屏)。因此,我將按鈕的大小和間距設置爲頂部(一個位於超級視圖頂部,另一個位於頂部按鈕底部)。

但是有沒有一種方法適應屏幕尺寸?例如。按鈕的寬度是視圖寬度減去一定的差距。或者像圖片中的按鈕居中(一個會很容易)?這可能嗎?

比其他選擇是做代碼中的一切(創建按鈕並創建約束)。在這裏,我可以查詢視圖寬度等,以相應地創建我的按鈕。這是唯一的方法嗎?

如何管理?

編輯:

現在我放置視圖控制器上的空白標籤。在這個標籤我增加了以下約束:

  • 居中y以:上海華,等於:0
  • 居中X到:上海華,等於:0

在我的按鍵我設置固定的高度和寬度。比superview的尾部空間等於50(水平對中作品,因爲兩個屏幕尺寸具有相同的寬度)。在頂部的按鈕具有以下限制:

  • 居中y以:不乾膠標籤,等於:20

底部的按鈕獲得:

  • 頂層空間到:不乾膠標籤,等於:20

不知道爲什麼它需要不同的約束,但在GUI編輯器中,我採用了按鈕的底部或頂部點。在這裏,標籤也得到:

  • 居中y以:頂部的按鈕,等於:20
  • 頂層空間到:底部按鈕,等於:20

現在我有兩個按鈕centerd上屏幕不管3.5或4英寸顯示。一個缺點是在3.5英寸顯示屏上與導航控制器和工具欄的距離非常小。在這裏,我可以使按鈕變小。任何其他的選擇嗎?最初的想法是總是將空間設置爲頂部元素,但是在4英寸的屏幕上,底部的空間比底部多得多。

回答

1

autolayout基於四個參數,x,y,w,h。瞭解這一點,動態佈局的關鍵是瞭解滿足所有四個約束條件所需的最少約束條件。

在您的繪圖中,我們可以通過「容器中的水平中心」來解決兩個按鈕的x座標。

w(寬度)可以是固定的(即300),也可以是推斷的(如果按鈕從前緣10離開,10從後緣向右),則寬度爲300 ...)

現在我們來到Y座標和H(高度)。你有幾個選項。限制高度,然後相應地設置Y. (即將高度鎖定到60,並且例如從頂部/底部到40的距離 - 您的實際值會有所不同......我在WWDC上看到的蘋果工程師的另一個技巧是在中心插入空白視圖,然後根據它設置按鈕的約束條件

希望這增加了一點洞察力,並且不會讓您更加迷惑.Autolayout很奇怪,並且記住,在ios8中我們還會考慮sizeClasses。 ;(

enter image description here

+0

「集裝箱水平中心」:?我把上的按鈕在中間的視圖難道你的意思是「推斷」:你如何設置這樣的限制,我只能設定「寬度等於」是一個固定的寬度或我可以將按鈕1的寬度設置爲與按鈕2相同。 「高度」:我想要一個等距佈局。爲3.5英寸顯示器設置頂部不同於4英寸。但我會嘗試用空洞的視角來獲得更好的Y位置。 – testing 2014-09-03 10:21:53

+0

我添加了一張圖片,顯示空的uiview是如何工作的。 – timothykc 2014-09-03 14:57:13

+0

最後,我採取了你的方法。我想我可以根據屏幕大小改變按鈕的Y座標,以便在4英寸的屏幕上按鈕和UIView之間的間距更高。但我只能使用空的UIView或將其釘在頂部/底部。 – testing 2014-09-17 19:50:47