美文网首页
使用SnipKit进行布局

使用SnipKit进行布局

作者: yytester | 来源:发表于2019-07-23 17:22 被阅读0次

    代码:

    
    import UIKit
    import SnapKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let view = UIView()
            view.backgroundColor = UIColor.red
            self.view.addSubview(view)
            
            //初始化约束
            view.snp.makeConstraints{ (make) in
                
                make.left.equalTo(20)
                make.right.equalTo(-20)
                make.top.equalTo(20)
                make.bottom.equalTo(-20)
                
            }
            
            //更新约束
            view.snp.updateConstraints{ (make) in
                
                make.left.equalTo(100)
                make.right.equalTo(-100)
                make.top.equalTo(100)
                make.bottom.equalTo(-100)
                
            }
            
            //移除约束
            view.snp.removeConstraints()
            
            
            // Do any additional setup after loading the view.
        }
    
    
    }
    
    
    

    初始化效果:


    image.png

    更新后效果:


    image.png

    两个view嵌套:

            
            // 黑色视图作为父视图
            let view1 = UIView()
            view1.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
            view1.center = view.center
            view1.backgroundColor = UIColor.black
            view.addSubview(view1)
            
            // 测试视图
            let view2 = UIView()
            view2.backgroundColor = UIColor.magenta
            view1.addSubview(view2)
            view2.snp.makeConstraints { (make) in
                make.top.equalToSuperview().offset(20)      // 当前视图的顶部距离父视图的顶部:20(父视图顶部+20)
                make.left.equalToSuperview().offset(20)     // 当前视图的左边距离父视图的左边:20(父视图左边+20)
                make.bottom.equalToSuperview().offset(-20)  // 当前视图的底部距离父视图的底部:-20(父视图底部-20)
                make.right.equalToSuperview().offset(-20)   // 当前视图的右边距离父视图的右边:-20(父视图右边-20)
                
    //            make.edges.equalToSuperview().inset(UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20))  //简洁写法
    
            }
    
    效果: image.png

    布局一个视图view2, 让它的水平中心线小于等于另一个视图view2的左边,可以这样布局:

    // 黑色视图作为父视图
             let view1 = UIView()
             view1.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
             view1.center = view.center
             view1.backgroundColor = UIColor.black
             view.addSubview(view1)
            
             // 测试视图
             let view2 = UIView()
             view2.backgroundColor = UIColor.magenta
             view1.addSubview(view2)
             view2.snp.makeConstraints { (make) in
                // 让顶部距离view1的底部为10的距离
                make.top.equalTo(view1.snp.bottom).offset(10)
                // 设置宽、高
                make.width.height.equalTo(100)
                // 水平中心线<=view1的左边
                make.centerX.lessThanOrEqualTo(view1.snp.leading)
             }
    
    image.png

    参考

    相关文章

      网友评论

          本文标题:使用SnipKit进行布局

          本文链接:https://www.haomeiwen.com/subject/qrsalctx.html