標籤: ios
autolayout
2016-11-25 09:05
4327人閱讀收藏
舉報
ios(14)
作者同類文章x
目錄(?)
[+]
viewwidth 佔其 superviewwidth 的百分比
viewleading 與 superviewleading 間距佔 superviewwidth 的百分比
viewtrailing 與 superviewtrailing 間距佔 superviewwidth 的百分比
viewleading 與 superviewcenterx 間距佔父檢視 superviewwidth 的百分比
限定view的寬高比
以 superviewwidth 寬度的某一百分比為 view 之間的間隔
歡迎到個人部落格: liumh.com檢視本文。
本文記錄如何在 uistoryboard 或者 xib 中進行百分比布局,包括
在 ios nslayoutconstraint priority 一文中提到過 multiplier, 上述提到的百分比布局都是基於 multiplier 實現的,下面來一一檢視其實現。
view.width 佔其 superview.width 的百分比
該功能實現很簡單,以乙個居中的按鈕 button 為例,首先將按鈕相對于父容器新增equal width
的 constraint,然後將它的 multiplier 設成 0.2,這樣就可實現 button1 的寬度為父容器寬度的 0.2 倍。操作步驟如下:
view.leading 與 superview.leading 間距佔 superview.width 的百分比
該功能實現其實是使 view.leading 相對於 superview.trailing 布局,然後再調整 multiplier 引數實現,如下操作步驟實現了將 button 的左邊距離父檢視左邊界的距離站父檢視寬度的0.2倍,如下:
view.trailing 與 superview.trailing 間距佔 superview.width 的百分比
該需求實現是使 view.trailing 相對於 superview.trailing 布局,然後再調整 multiplier 引數,需要注意的是使用reverse first and second item
調整如下表示式中 item1 和 item2 在等式中兩邊的位置。
item1.attribute1 = multiplier × item2.attribute2 + constant
以下步驟實現 button 的 trailing 距離父檢視右邊距為父檢視寬度的0.2倍,需要注意的是,此時的 multiplier 是 (1-0.2=0.8),在修改 button 約束值時,可以從頂部導航中看到約束表示式的變化:
view.leading 與 superview.centerx 間距佔父檢視 superview.width 的百分比
有時間需要將 ui 元件相對于父檢視的中線進行布局,比如將 view.leading 與父檢視中線的距離設定為父檢視寬度20%, 即相對于父檢視 centerx 的 multiplier 值為 1.4
限定view的寬高比
有時候我們需要保持檢視的寬高比不變進行縮放,此時可以設定其 aspect ratio 保持其在進行縮放時寬高比固定。
以 superview.width 寬度的某一百分比為 view 之間的間隔
要實現這個需求就沒有之前那麼簡單了,這需要新增乙個間距檢視,設定每個檢視與相鄰間距檢視的邊緣間距約束,然後給所有的間距檢視新增相對於其父檢視的等寬約束,設定合適的比例即可。這裡借用 為iphone 6設計自適應布局 文中一圖:
關於文中所涉及到的方法,可在 autolayoutmultiplier 工程中檢視。
參考:
頂 2
踩 0
我的同類文章
ios(14)
css百分比定位和百分比尺寸
只有設定了定位的 relative,absolute,fixed 的元素才有left,top等屬性。子元素relative定位 百分比定位和百分比尺寸都是相對于父元素,無論父元素有沒有定位 子元素absolute定位 百分比定位和百分比尺寸都是相對於最近的定位了的祖先元素,如果沒有則相對於視窗。可以...
百分比布局
參考位址 螢幕的適配是我們android開發最經常做的事情之一,我們一直指望著能夠一套布局適配所有。於是在android5.0之後,提供了android support percent lib,這樣我們可以盡情的使用。使用的時候,我們嗯需要設定的有 layout marginpercent layo...
百分比布局
其中相對布局和幀布局官方是有支援庫的 compile com.android.support percent 25.3.0 但線性布局並沒有 public class percentlinearlayout extends linearlayout override protected void o...