2 回答

TA貢獻1815條經驗 獲得超6個贊
請注意,在iOS 9中,此技術將變得不必要,因為UIStackView將自動執行分發。我將添加另一個答案來解釋它是如何工作的。
如何使用Autolayout執行均勻分布
單獨在Interface Builder中執行此操作的最簡單方法(而不是在代碼中構造約束)是使用“spacer”視圖:
絕對定位頂部和底部按鈕。
在所有按鈕之間放置間隔視圖。使用約束將它們水平放置(水平居中最簡單)并設置它們的寬度。
在每個按鈕與其上方和下方的間隔視圖之間進行約束,常數為0。
現在選擇所有間隔視圖并將它們的高度設置為相等。
第一個屏幕截圖顯示我在IB中進行設置:
我故意沒有糾正“錯位觀點”,因為我希望你在我設計約束時看到它的樣子。這是4英寸和3.5英寸屏幕的結果:
我把間隔視圖留下了黑色,只是為了向您展示這種技術是如何工作的,但當然在現實生活中你會讓它們變得透明,因而看不見!因此,用戶只能看到您的按鈕,均勻分布在任一屏幕高度上。
使用這種技術的原因是,盡管相等的概念執行了您所要求的值的分布,但約束只能在視圖的各個方面之間應用相等; 因此我們需要額外的視圖(間隔視圖),以便我們可以使其他東西等于(這里是間隔視圖的高度)。
其他方法
顯然,更靈活的方法是在代碼中分配約束。這可能聽起來令人生畏,但有很多第三方代碼可以幫助你,比如這類事情。
例如,如果我們有一個(可能是不可見的)上海華盈的高度作為一個邊界,以決定我們的四個按鈕的最大垂直分布,我們可以固定自己的上衣給上海華盈的有垂直中心constant
的0
,但一multiplier
中0.000001
,0.666667
,1.33333
,和2.0
分別(如果我們有四個按鈕); 現在按鈕將保持垂直分布,即使超視圖根據屏幕高度或其他任何方式改變大小。[在Xcode 5.1中,可以在Interface Builder中進行設置,但在早期版本的Xcode中是不可能的。]
- 2 回答
- 0 關注
- 736 瀏覽
添加回答
舉報