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

SnapKit

snp_remakeConstraints

snp_remakeConstraints is similar to snp_makeConstraints, but will first remove all existing constraints installed by SnapKit.

移除之前的所有约束,然后添加新约束的方法是:snp_makeConstraints
我们来体验一下 snp_makeConstraints这个方法。

效果图:

Show Your Code

初始化 button

      var button: UIButton!
    var isExpanded = false
        button = UIButton(type: UIButtonType.System)
       button.setTitle("点击展开", forState: .Normal)
       button.layer.borderWidth = 3
       button.layer.borderColor = UIColor.redColor().CGColor
       button.backgroundColor = UIColor.greenColor()
       button.addTarget(self, action: "change", forControlEvents: UIControlEvents.TouchUpInside)
       view.addSubview(button)

重写方法

override func updateViewConstraints() {
// 这里使用update也是一样的。
// remake会将之前的全部移除,然后重新添加
      button.snp_remakeConstraints { (make) -> Void in
          make.top.leading.trailing.equalTo(view)
          if isExpanded {
              make.bottom.equalTo(view)
          }else {
              make.bottom.equalTo(-300)
          }
      }
      super.updateViewConstraints()
  }

按钮方法

 func change() {
      isExpanded = !isExpanded
      if !isExpanded {
          button.setTitle("点击展开", forState: .Normal)
      }else {
          button.setTitle("点击收起", forState: .Normal)
      }
      self.view.setNeedsUpdateConstraints()
      self.view.updateConstraintsIfNeeded()
      UIView.animateWithDuration(0.5) { () -> Void in
          self.view.layoutIfNeeded()
      }
  }

dowhilenet
654 声望10 粉丝

引用和评论

0 条评论