Autolayout 动画
override func didMoveToSuperview() {
let view = UIView()
view.backgroundColor = UIColor.whiteColor()
/// 这里是初始位置
view.addTo(self).snp_makeConstraints { (make) in
make.width.height.equalTo(100)
make.center.equalTo(self)
}
/// 这里是动画移动位置
view.snp_updateConstraints { (make) in
make.centerY.equalTo(self).offset(100)
}
UIView.animateWithDuration(1, delay: 1, usingSpringWithDamping: 1, initialSpringVelocity: 0.8, options: [], animations: {
/// 开始执行动画
view.layoutIfNeeded()
}, completion: nil)
}
如上代码;
我需要实现,以makeConstraints为初始位置,使用动画效果移动到updateConstraints执行之后的位置;但是目前的结果是,代码执行后,动画执行效果是直接从view创建过渡到up之后最终的位置。
请问如何解决?刚做autolayout动画,不熟悉
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
初始的布局操作之后进行 layoutIfNeeded(),
然后再setNeedLayout()告诉它后面的内容是你需要更新的,这样就有动画效果了。
这个问题是由于最初的约束还没有生效就进行了修改,解决方案是在snp_makeConstraints后面先调用一次view.layoutIfNeeded()使这些约束生效,然后再进行Update约束和动画