SnapKit自动布局(一)

也许你在写OC的时候已经用过了Masonry这个第三方库来写自动布局,今天我们来说说Swift版本的Masonry第三方库SnapKit

SnapKit

今天就先来用SnapKit来做一件简单的自动布局。

效果图

Show your code

let greenView = UIView()
        greenView.backgroundColor = UIColor.greenColor()
        let redView = UIView()
        redView.backgroundColor = UIColor.redColor()
        let blueView = UIView()
        blueView.backgroundColor = UIColor.blueColor()
        
        self.view.addSubview(greenView)
        self.view.addSubview(redView)
        self.view.addSubview(blueView)
        
        greenView.snp_makeConstraints { (make) -> Void in
            make.leading.top.equalTo(20)
            make.trailing.equalTo(redView.snp_leading).offset(-20)
            make.width.height.equalTo(redView)
            make.height.equalTo(blueView)
        }
        
        redView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(greenView.snp_top)
            make.trailing.equalTo(-20)
        }
        
        blueView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(greenView.snp_bottom).offset(20)
            make.leading.equalTo(greenView.snp_leading)
            make.trailing.equalTo(redView.snp_trailing)
            make.bottom.equalTo(-20)
        }

首先我们实例化了三个不同的View ,并给他们不同的背景颜色,添加到父视图中。

接下来就是我们使用SnapKit来自定义布局。

 greenView.snp_makeConstraints { (make) -> Void in
                 //距离父视图 左 和 上 为20
            make.leading.top.equalTo(20)
            //右边距离 redView 的左边 20 (要注意这里的参数-20)
            make.trailing.equalTo(redView.snp_leading).offset(-20)
            // 设置 greenView  的高度 和 宽度 和 redView 相同
            make.width.height.equalTo(redView)
            //设置 blueView 的高度也和 greenView相同
            make.height.equalTo(blueView)
        }
        
        redView.snp_makeConstraints { (make) -> Void in
        //设置红色视图 的顶部和 绿色一样
            make.top.equalTo(greenView.snp_top)
            //设置它的左边距离父视图 20
            make.trailing.equalTo(-20)
        }
        
         blueView.snp_makeConstraints { (make) -> Void in
         //设置 blueView 顶部距离绿色视图 底部 20
            make.top.equalTo(greenView.snp_bottom).offset(20)
            //设置左边 和 绿色视图左边一样
            make.leading.equalTo(greenView.snp_leading)
            //设置右边和红色视图右边一样
            make.trailing.equalTo(redView.snp_trailing)
            //设置底部距离父视图 20
            make.bottom.equalTo(-20)
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SnapKit 是一个 iOS 的自动布局框架,它提供了一些方法来帮助我们更方便地进行布局。其中一个方法是使用数组来同时约束多个视图。 数组用法示例: ```swift let view1 = UIView() let view2 = UIView() let view3 = UIView() view.addSubview(view1) view.addSubview(view2) view.addSubview(view3) view1.snp.makeConstraints { (make) in make.top.equalToSuperview().offset(20) make.leading.equalToSuperview().offset(20) make.width.equalTo(100) make.height.equalTo(100) } view2.snp.makeConstraints { (make) in make.top.equalToSuperview().offset(20) make.leading.equalTo(view1.snp.trailing).offset(20) make.width.equalTo(100) make.height.equalTo(100) } view3.snp.makeConstraints { (make) in make.top.equalToSuperview().offset(20) make.leading.equalTo(view2.snp.trailing).offset(20) make.trailing.equalToSuperview().offset(-20) make.height.equalTo(100) } // 使用数组同时约束多个视图的宽度 [SnapKitConstraint(view1.snp.width), SnapKitConstraint(view2.snp.width), SnapKitConstraint(view3.snp.width)].equal(to: 100) ``` 在上面的示例中,我们创建了三个视图,并使用 `snp.makeConstraints` 方法约束它们的位置和大小。然后,使用数组 `[SnapKitConstraint(view1.snp.width), SnapKitConstraint(view2.snp.width), SnapKitConstraint(view3.snp.width)]` 来同时约束这三个视图的宽度,使它们都等于 100。 数组中的元素是 `SnapKitConstraint` 类型,它是 SnapKit 中的一个结构体,用于表示一个约束条件。在这里,我们使用 `SnapKitConstraint(view1.snp.width)` 来表示 view1 的宽度约束条件,使用 `SnapKitConstraint(view2.snp.width)` 来表示 view2 的宽度约束条件,以此类推。最后,使用 `equal(to: 100)` 方法来把它们的宽度都设置为 100。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值