首页 > Autolayout 动画

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动画,不熟悉


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


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

【热门文章】
【热门文章】