美文网首页iOS DevSwiftswift
Swift语法糖---初始化Then

Swift语法糖---初始化Then

作者: calm1993 | 来源:发表于2018-04-24 12:03 被阅读816次

    Then是一个swift初始化库,只有80几行的代码库,确可以让初始化变得很优雅

    • 使用then初始化AnyObject,这里以初始化控件为例
        lazy var label = UILabel().then({
            $0.text = "label"
            $0.textColor = .blue
        })
    
        let redView = UIView().then { (make) in
            make.backgroundColor = .red
            make.frame = CGRect(x: 50, y: 50, width: 100, height: 100)
        }
    
        let button = UIButton().then ({
                $0.setTitle("点我", for: .normal)
                $0.setTitleColor(.red, for: .normal)
            })
    
    • 如果布局这样还不简单那就只能来骚的了,ThenSnapKit一起使用的方式
        let button1 = UIButton().then { (make) in
                make.setTitle("登录", for: .normal)
                make.setTitleColor(.black, for: .normal)
                view.addSubview(make)
                
                make.snp.makeConstraints({ (make) in
                    make.top.left.right.equalTo(0)
                    make.height.equalTo(100)
                })
            }
    
    • 或者你还可以这样
        let button2 = UIButton().then({
            $0.setTitle("登录", for: .normal)
            $0.setTitleColor(.black, for: .normal)
            view.addSubview($0)
            
            $0.snp.makeConstraints({
                $0.top.equalTo(button1.snp.bottom)
                $0.left.right.equalTo(0)
                $0.height.equalTo(50)
            })
          })
    
    • 其他用法
        let newFrame = oldFrame.with {
              $0.size.width = 200
              $0.size.height = 100
        }
        newFrame.width // 200
        newFrame.height // 100
    
        UserDefaults.standard.do {
            $0.set("devxoul", forKey: "username")
            $0.set("devxoul@gmail.com", forKey: "email")
            $0.synchronize()
        }
    

    Then: Github

    相关文章

      网友评论

        本文标题:Swift语法糖---初始化Then

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