问题如题目所示,为什么当 Core Animation 完成时,layer 又会恢复到原先的状态?
因为那只是表现上的动画,并没有真的修改什么东西,和 UIView.animateXXX 那些东西不一样。想要保留效果,要在 addAnimation 之外再去自己设置,像这样:
rectLayer.addAnimation(alphaAnim, forKey: "alphaAnim")
rectLayer.opacity = 1
本来 rectLayer.opacity 是 0 , alphaAnim 的作用是把它渐变成 1 ,这样设置之后就会在动画结束后保持为 1 。
有时候实在不好这样做,也有下策:
alphaAnim.removedOnCompletion = false
alphaAnim.fillMode = kCAFillModeForwards
让动画在完成后也不移除,并且停留在动画结束的状态。但要记住做了动画的元素本来的设置没有因为动画而产生任何变化,否则就各种呵呵了。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。