swift - 給一個視圖添加約束

注意:這個View是父視圖  view1 和 view2 是互相約束的 
注意:盡量view2 為同一個層級 這樣循環(huán)加view1的時候容易計算

view1.translatesAutoresizingMaskIntoConstraints = false
View.addSubview(view1)
View.addConstraint(NSLayoutConstraint(
                         item: <#AnyObject#>,  指定約束左邊的視圖view1
                         attribute: <#NSLayoutAttribute#>,  指定view1的屬性attr1
                         relatedBy: <#NSLayoutRelation#>,  指定左右兩邊的視圖的關(guān)系relation
                         toItem: <#AnyObject?#>,  指定約束右邊的視圖view2
                         attribute: <#NSLayoutAttribute#>,  指定view2的屬性attr2
                         multiplier: <#CGFloat#>,  指定一個與view2屬性相乘的乘數(shù)multiplier
                         constant: <#CGFloat#>))  指定一個與view2屬性相加的浮點數(shù)constant

公式:view1.attr1 <relation> view2.attr2 * multiplier + constant

eg:
[NSLayoutConstraint constraintWithItem:view1
                             attribute:NSLayoutAttributeLeft
                             relatedBy:NSLayoutRelationEqual
                                toItem:view2
                             attribute:NSLayoutAttributeRight
                            multiplier:1
                              constant:10]
          代碼意思是:    view1的左側(cè),在,view2的右側(cè),再多10個點,的地方。


NSLayoutRelation:
typedef NS_ENUM(NSInteger, NSLayoutRelation) {
    NSLayoutRelationLessThanOrEqual = -1,          //小于等于
    NSLayoutRelationEqual = 0,                     //等于
    NSLayoutRelationGreaterThanOrEqual = 1,        //大于等于
};

NSLayoutAttribute:
typedef NS_ENUM(NSInteger, NSLayoutAttribute) {
     NSLayoutAttributeLeft = 1,                     //左側(cè)
     NSLayoutAttributeRight,                        //右側(cè)
     NSLayoutAttributeTop,                          //上方
     NSLayoutAttributeBottom,                       //下方
     NSLayoutAttributeLeading,                      //首部
     NSLayoutAttributeTrailing,                     //尾部
     NSLayoutAttributeWidth,                        //寬度
     NSLayoutAttributeHeight,                       //高度
     NSLayoutAttributeCenterX,                      //X軸中心
     NSLayoutAttributeCenterY,                      //Y軸中心
     NSLayoutAttributeBaseline,                     //文本底標(biāo)線
     NSLayoutAttributeNotAnAttribute = 0            //沒有屬性
};

//水平約束NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[greenView]-20-[yellowView(==greenView)]-20-|", options: 0, metrics: nil, views: [view1 : view2])
//垂直約束   NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[greenView]-20-[yellowView(==greenView)]-20-|", options: 0, metrics: nil, views: [view1 : view2])

//修改約束
UIView.animateWithDuration(0.3, animations: { () -> Void in
     //有時需要
     superview.layoutIfNeeded()
     self.layoutIfNeeded()
     self.deleteLabel.layoutIfNeeded()
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容