易于自动布局的扩展

使用自动布局没有错误!

自动版面

扩展名용하여自动布局을접근하자。

  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를를를를다。

参考影片