約束動畫需要view調用一下layoutIfNeeded纔可以, 直接上代碼
// MARK: - 彈簧動畫
private func settingAnimation() {
// 更新約束
self.iconImageView.snp_updateConstraints(closure: { (make) -> Void in
make.bottom.equalTo(self.view.snp_bottom).offset(-UIScreen.mainScreen().bounds.height + 200)
})
// usingSpringWithDamping: 彈簧效果 0~1.0 取值越小,彈簧效果越明顯
// initialSpringVelocity:表示初始的速度
// OC裏給枚舉的默認值是 填寫 0;swift中 用 []標示
UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 10, options: [], animations: { () -> Void in
// 約束動畫,需要調用layoutIfNeeded
self.view.layoutIfNeeded()
}) { (_) -> Void in
printLog("動畫完成")
// MARK: - 切換控制器視圖
NSNotificationCenter.defaultCenter().postNotificationName(kNotificationChangeViewController, object: self)
}
}
約束一定要在動畫之前, 在動畫中調用一下layoutIfNeeded, 要不然不會達到你想要的效果的