易于自动布局的扩展
使用自动布局没有错误!
自动版面
扩展名용하여自动布局을접근하자。
translationsAutoresizingMaskIntoConstraints = false
AutoLayout上的图上的图적용이안됐는이것이다。 扩展到自动布局。
기본锚함수
扩展UIView {
func anchor(顶部:NSLayoutYAxisAnchor,前导:NSLayoutXAxisAnchor,底部:NSLayoutYAxisAnchor,尾部:NSLayoutXAxisAnchor){
translationsAutoresizingMaskIntoConstraints = false
topAnchor.constraint(equalTo:top).isActive = true
leadAnchor.constraint(equalTo:Leading).isActive = true
bottomAnchor.constraint(equalTo:bottom).isActive = true
Trailing.constraint(equalTo:Trailing).isActive = true
}
}
在顶部,顶部,底部,尾随锚anchor정을로묶어준다。
填充
topAnchor.constraint(等于:<#NSLayoutAnchor #>,常量:)
func anchor(顶部:NSLayoutYAxisAnchor,前导:NSLayoutXAxisAnchor,底部:NSLayoutYAxisAnchor,尾部:NSLayoutXAxisAnchor,填充:UIEdgeInsets = .zero){
translationsAutoresizingMaskIntoConstraints = false
topAnchor.constraint(equalTo:top,constant:padding.top).isActive = true
leadAnchor.constraint(equalTo:前导,常数:padding.left).isActive = true
bottomAnchor.constraint(equalTo:bottom,constant:-padding.bottom).isActive = true
Trailing.constraint(equalTo:尾随,常量:-padding.right).isActive = true
}
填充:UIEdgeInsets = .zero设置.zero设置为默认值。
UIEdgeInsets
view.anchor(顶部:view.safeAreaLayoutGuide.topAnchor,前导:view.leadingAnchor,底部:view.safeAreaLayoutGuide.bottomAnchor,尾随:view.trailingAnchor,填充:.init(顶部:,左:,底部:,右侧:))
padding ding인자에ding을을을.init인자에사넣어준다。
尺寸
func anchor2(顶部:NSLayoutYAxisAnchor,前导:NSLayoutXAxisAnchor,底部:NSLayoutYAxisAnchor,尾部:NSLayoutXAxisAnchor,填充:UIEdgeInsets = .zero,大小:CGSize = .zero){
...
如果size.width!= 0 {
widthAnchor.constraint(equalToConstant:size.width).isActive = true
}
如果size.height!= 0 {
heightAnchor.constraint(equalToConstant:size.height).isActive = true
}
}
大小:CGSize缺省值。
大小填充填充填充列表初始化CGSize初始化初始化。
大小준다것이아니다。 기존에锚충돌이안된다。
可选로바꿔주는
func anchor2(顶部:NSLayoutYAxisAnchor ?,前导:NSLayoutXAxisAnchor ?,底部:NSLayoutYAxisAnchor ?,尾部:NSLayoutXAxisAnchor ?,填充:UIEdgeInsets = .zero,尺寸:CGSize = .zero){
translationsAutoresizingMaskIntoConstraints = false
如果让top = top {
topAnchor.constraint(equalTo:top,constant:padding.top).isActive = true
}
如果让领先=领先{
leadAnchor.constraint(equalTo:前导,常数:padding.left).isActive = true
}
如果让bottom = bottom {
bottomAnchor.constraint(equalTo:bottom,constant:-padding.bottom).isActive = true
}
如果让尾随=尾随{
Trailing.constraint(equalTo:尾随,常量:-padding.right).isActive = true
}
如果size.width!= 0 {
widthAnchor.constraint(equalToConstant:size.width).isActive = true
}
如果size.height!= 0 {
heightAnchor.constraint(equalToConstant:size.height).isActive = true
}
}
可选绑定,可选绑定。
可选的自动布局自动布局。
[redView,blueView] .forEach {view.addSubview($ 0)}
for + forEach $ 0뜻한뜻한뜻한。뜻한。
가로세로비율
redView.heightAnchor.constraint(equalTo:redView.widthAnchor).isActive = true
1:1임의로추가해주자
widthAnchor.constraint(等于:<#NSLayoutAnchor #>)
NSLayoutDimension은equalTo이다。
func anchorSize(以查看:UIView){
widthAnchor.constraint(等于:view.widthAnchor)
heightAnchor.constraint(等于:view.heightAnchor)
}
填补监督
func fillSuperview(){
锚(顶部:superview?
}
만든만든superview를를를를다。
参考影片