項目中可能須要代碼作約束,你們通常都使用三方的Masonry、snapKit(swift使用)等方式,stroyboard就不說了。蘋果給咱們提供了一套本身的約束封裝,其實也挺好的。若是你要寫一套框架,或者封裝一個類之類的用到了自動佈局,那不要再用三方的了。儘量獨立完整,這時候蘋果的約束就尤其重要。直接上代碼吧!git
//兩個viewgithub
let blueBlock = UIView()swift
let orangeBlock = UIView()框架
//這兩句必須寫ide
blueBlock.translatesAutoresizingMaskIntoConstraints = false佈局
orangeBlock.translatesAutoresizingMaskIntoConstraints = falseui
//顏色設置code
blueBlock.backgroundColor = UIColor.blueit
orangeBlock.backgroundColor = .orangegui
//和snp同樣先加入
view.addSubview(blueBlock)
view.addSubview(orangeBlock)
/*
四個可約束環境
leadingAnchor
topAnchor
widthAnchor
heightAnchor
此句: equalTo: 相對於誰作約束, constant: 10(意思就是加10)
此句: .isActive = true //開啓這個約束(不可省略,只有開啓了纔算有意義)
guide是我寫的一個分類屬性,能夠是相對於safe area 也能夠是相對於父視圖view
*/
blueBlock.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 10).isActive = true
blueBlock.topAnchor.constraint(equalTo: guide.topAnchor, constant: 10).isActive = true
blueBlock.widthAnchor.constraint(equalToConstant: 100).isActive = true
blueBlock.heightAnchor.constraint(equalToConstant: 100).isActive = true
到這裏第一個view的約束已經作完了,寫完試試吧!爲了看到相對的效果這裏是完整的demo能夠下載看看:
https://github.com/caoge9/Cons.git