SnapKit的使用 swift
下载链接
https://github.com/SnapKit/SnapKit
makeConstraints 制作约束
updateConstraints 修改约束
import UIKit import SnapKit class ViewController: UIViewController { lazy var blackView = UIView() override func viewDidLoad() { super.viewDidLoad() blackView.backgroundColor = UIColor.black view.addSubview(blackView) blackView.snp.makeConstraints { (make) in // 四个约束确定位置和大小 make.width.equalTo(100) make.height.equalTo(150) make.top.equalTo(10) make.centerX.equalToSuperview() } } override func updateViewConstraints() { blackView.snp.updateConstraints { (make) in // 更新距离父视图顶部的约束(从 10 ---> 300 ) make.top.equalTo(300) } // 根据苹果,调用父类应该放在末尾 super.updateViewConstraints() } }
remakeConstraints 重做约束
本质就是:去掉已有的所有约束, 重新做约束,下面的代码因为少了一个约束,会报错
// 点击更新/制作约束 func buttonAction() { // 注意这里是 remakeConstraints blackView.snp.remakeConstraints { (make) in make.width.height.equalTo(20) make.top.equalTo(300) } print("这里试试snapkit有没有报警告") }
dividedBy 几等分,适合平分屏幕的几个按钮这种情况
class ViewController: UIViewController { lazy var redView = UIView() override func viewDidLoad() { super.viewDidLoad() redView.backgroundColor = UIColor.red view.addSubview(redView) redView.snp.makeConstraints { (make) in // width 是父视图宽的一半 make.width.equalToSuperview().dividedBy(2) // height 是父视图高的三分之一 make.height.equalToSuperview().dividedBy(3) make.center.equalToSuperview() } } }
multipliedBy 几倍,适合图片宽高比这种情况
coverView.snp.makeConstraints { make in make.top.equalTo(15.0) make.left.right.equalToSuperview() make.height.equalTo(coverView.snp.width).multipliedBy(210.0 / 168.0) }
safeAreaLayoutGuide 布局
class ViewController: UIViewController { lazy var magentaView = UIView() override func viewDidLoad() { super.viewDidLoad() magentaView.backgroundColor = .magenta view.addSubview(magentaView) magentaView.snp.makeConstraints { (make) in make.top.equalTo(view.safeAreaLayoutGuide.snp.top) make.left.right.equalToSuperview() make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom) } } }
-
在iPhone X之前, view.safeAreaLayoutGuide(即安全区域)的顶部距离当前窗口顶部一个状态栏的高度(20dp)
-
对于iPhone X来说,view.safeAreaLayoutGuide(即安全区域)的顶部距离当前窗口顶部一个导航栏的高度(44dp)
-
在iPhone X之前, view.safeAreaLayoutGuide(即安全区域)的底部距离就是当前窗口(当前视图)的底部
-
对于iPhone X来说,view.safeAreaLayoutGuide(即安全区域)的底部距离当前窗口底部 34dp
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……