SnapKit动画效果的实现
var view4 : UIView!
var type = true
//创建按钮
func initButton() -> Void {
let btn = UIButton(type: .Custom)
btn.backgroundColor = UIColor.blueColor()
btn.addTarget(self, action: "clickedBtn:", forControlEvents: .TouchUpInside)
self.view.addSubview(btn)
btn.snp_makeConstraints { (make) in
make.centerX.equalTo(self.view)
make.top.equalTo(self.view).offset(100)
make.width.height.equalTo(50)
}
}
//创建视图
func initView4() -> Void {
self.view4 = UIView()
self.view4.backgroundColor = UIColor.greenColor()
self.view.addSubview(self.view4)
self.view4.snp_makeConstraints { (make) in
make.centerX.equalTo(self.view)
make.top.equalTo(self.view).offset(250)
make.width.equalTo(100)
make.height.equalTo(50)
}
}
//按钮的点击方法
func clickedBtn(btn : UIButton) {
if self.type {
self.type = false
//动画
UIView.animateWithDuration(1, animations: {
//也可以用改变的约束不多,也可以用snp_updateConstraints方法
self.view4.snp_remakeConstraints(closure: { (make) in
make.centerX.equalTo(self.view)
//向下移动110
make.top.equalTo(self.view).offset(250 + 110)
make.width.equalTo(100)
make.height.equalTo(50)
})
//用来立即刷新布局(不写无法实现动画移动,会变成瞬间移动)
self.view.layoutIfNeeded()
})
}
else{
self.type = true
//动画
UIView.animateWithDuration(1, animations: {
self.view4.snp_updateConstraints(closure: { (make) in
//向上移110(移回去)
make.top.equalTo(self.view).offset(250)
})
//用来立即刷新布局(用需要实现动画视图的父视图(self.view),用需要实现动画的视图(self.view4)好像不起作用,不要问我为什么,我写这文章前也不知道为什么,如果有人知道,请在评论里告诉我,谢谢)
self.view.layoutIfNeeded()
//self.view4.layoutIfNeeded()
})
}
}