Autolayout 动画

发布于 2022-09-02 15:20:31 字数 831 浏览 11 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小…红帽 2022-09-09 15:20:31

初始的布局操作之后进行 layoutIfNeeded(),
然后再setNeedLayout()告诉它后面的内容是你需要更新的,这样就有动画效果了。

若言繁花未落 2022-09-09 15:20:31

这个问题是由于最初的约束还没有生效就进行了修改,解决方案是在snp_makeConstraints后面先调用一次view.layoutIfNeeded()使这些约束生效,然后再进行Update约束和动画

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文