示例效果
说明
黄色lable为子view(childView),红色view为父view(parentView)。两者关系为:
childView在距离父控件的左右各20边距处,高度25。chidView在parentView中垂直方向上居中显示。
注:
约束的设置,控件内部约束由自己添加,比如宽高,如果是与其他的
控件约束那么有父控件添加
NSLayoutConstraint参数说明:
/** * 创建约束 NSLayoutConstraint 参数 说明: * item 自己 * attribute * relatedBy 大于等于 小于等于 等于 ... * toItem 另外一个控件 * attribute 另一个控件的属性 * multiplier 乘以多少 * constant : 加上多少 * NSLayoutConstraint : 某个控件的属性值 等于 另外一个控件的属性值 乘以多少 加上多少 * 添加约束 addConstraint */
NSLayoutConstraint(item view1: Any,attribute attr1: NSLayoutAttribute,relatedBy relation: NSLayoutRelation,toItem view2: Any?,attribute attr2: NSLayoutAttribute,multiplier: CGFloat,constant c: CGFloat)
创建子控件
let childView = UILabel()
childView.text = "正在链接服务器"
childView.backgroundColor = UIColor.yellow //背影黄色
childView.textAlignment = .center //文本居中对齐
parentView.backgroundColor = UIColor.red//设置父元素背影红色,方便查看效果
关闭autoresizing
// 关闭autoresizing,不然无效果
childView.translatesAutoresizingMaskIntoConstraints =false
创建约束:
//创建相对父view的左右间距各20
//在约束
let leftConstraint = NSLayoutConstraint(item: childView,attribute: NSLayoutAttribute.leading,relatedBy: NSLayoutRelation.equal,toItem: topStatusBarView,attribute:NSLayoutAttribute.leading,multiplier: 1.0,constant: 20)
//右约束
let rightConstraint = NSLayoutConstraint(item: childView,attribute: NSLayoutAttribute.trailing,attribute:NSLayoutAttribute.trailing,constant: -20)
let centerConstraint = NSLayoutConstraint(item: childView,attribute: NSLayoutAttribute.centerY,attribute:NSLayoutAttribute.centerY,constant: 0)
//子控件自身高度
let heigtConstraint = NSLayoutConstraint(item: childView,attribute: NSLayoutAttribute.height,toItem: nil,attribute:NSLayoutAttribute.notAnAttribute,constant: 25)
//子控件内部自己的属性(高度,自己添加)
childView.addConstraint(heigtConstraint)
//子元素相对父亲的元素,由父添加
parentView.addConstraints([leftConstraint,rightConstraint,centerConstraint])
原文链接:https://www.f2er.com/swift/322435.html