你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> AutoLayout 布局技巧-等寬子視圖

AutoLayout 布局技巧-等寬子視圖

編輯:IOS開發基礎

所謂等寬子視圖,也就是對一個有 n 個子視圖的父視圖來說,無論父視圖的寬度怎麼變化,所有子視圖的寬度是相等的。這裡給出一種等寬子視圖布局的情況(n = 3),如下圖:

20150108-1.png

分析一下這種情況的視圖約束規則, view1,view2,view3 這三個子視圖具有相同的寬度,子視圖之間的 padding 為 10,view1 的左邊與父視圖距離為 20 ,view3 的右邊與父視圖的距離也為 20。簡單起見,所有子視圖的高度都為 50(不考慮高度的影響)。

接下來將上面的約束一一實現,其中用到的關鍵的約束條件就是’等寬約束’。

下圖是在 Storyboard 中的約束實現:

20150108-2.png

下面是 Swift 代碼實現的約束:

let view1 = UILabel()
view1.backgroundColor = UIColor.redColor()
view1.textAlignment = .Center
view1.text = "view1"
view1.textColor = UIColor.whiteColor()
view1.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(view1)
let view2 = UILabel()
view2.backgroundColor = UIColor.blueColor()
view2.textAlignment = .Center
view2.text = "view2"
view2.textColor = UIColor.whiteColor()
view2.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(view2)
let view3 = UILabel()
view3.backgroundColor = UIColor.purpleColor()
view3.textAlignment = .Center
view3.text = "view3"
view3.textColor = UIColor.whiteColor()
view3.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(view3)
let viewDic = [
"view1": view1,
"view2": view2,
"view3": view3,
]
var constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[view1]-10-[view2(==view1)]-10-[view3(==view2)]-20-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewDic)
self.view.addConstraints(constraints)
constraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[view1(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewDic)
self.view.addConstraints(constraints)
constraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[view2(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewDic)
self.view.addConstraints(constraints)
constraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[view3(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewDic)
self.view.addConstraints(constraints)

如果將例子中的所有的水平 padding 都去掉的話,則三個子視圖就將父視圖的寬度三等分了。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved