注意:view添加或更改约束之前需要将该view的属性translatesAutoresizingMaskIntoConstraints 设置为false。该属性默认为true,标志使用autolayout
*创建约束 NSLayoutConstraint 参数 说明:
* item 自己
* attribute 需要约束的属性
* relatedBy 大于等于 小于等于 等于
* toItem 参照view
* attribute 参照view的参照属性
* multiplier 比例
* constant : 距离(正负数)
宽度和高度是添加到自己身上的,而上下左右四个方向的约束添加到superView上面的。而且只有是宽度和高度约束时,multiplier可以设置为0.0
设置宽度约束等于64,并没有参照view,而且参照属性值为.notAnAttribute
let widthContraint = NSLayoutConstraint.init(item: self.iconImageView,
attribute: .width,
relatedBy: .equal,
toItem: nil,
attribute: .notAnAttribute,
multiplier: 0.0,
constant: 64)
self.iconImageView.addConstraint(widthContraint)
设置左边与superView的距离等于15
let leftConstraint = NSLayoutConstraint.init(item: self.iconImageView,
attribute: .left,
relatedBy: .equal,
toItem: self,
attribute: .left,
multiplier: 1.0,
constant: 15)
self.iconImageView.superview?.addConstraint(leftConstraint)
对于同一层级的view直接的约束,也是添加到superView上面。例如:设置titleLabel与iconImageView左边距为10
let leftConstraint = NSLayoutConstraint.init(item: self.titleLabel,
attribute: .left,
relatedBy: .equal,
toItem: self.iconImageView,,
attribute: .left,
multiplier: 1.0,
constant: 10)
self.iconImageView.superview?.addConstraint(leftConstraint)