开发者社区> 问答> 正文

为什么当 Core Animation 完成时,layer 又会恢复到原先的状态?

问题如题目所示,为什么当 Core Animation 完成时,layer 又会恢复到原先的状态?

展开
收起
a123456678 2016-07-28 10:20:25 2550 0
2 条回答
写回答
取消 提交回答
  • 因为那只是表现上的动画,并没有真的修改什么东西,和 UIView.animateXXX 那些东西不一样。想要保留效果,要在 addAnimation 之外再去自己设置
    2019-07-17 20:01:06
    赞同 展开评论 打赏
  • 因为那只是表现上的动画,并没有真的修改什么东西,和 UIView.animateXXX 那些东西不一样。想要保留效果,要在 addAnimation 之外再去自己设置,像这样:

    rectLayer.addAnimation(alphaAnim, forKey: "alphaAnim")
    rectLayer.opacity = 1
    本来 rectLayer.opacity 是 0 , alphaAnim 的作用是把它渐变成 1 ,这样设置之后就会在动画结束后保持为 1 。

    有时候实在不好这样做,也有下策:

    alphaAnim.removedOnCompletion = false
    alphaAnim.fillMode = kCAFillModeForwards
    让动画在完成后也不移除,并且停留在动画结束的状态。但要记住做了动画的元素本来的设置没有因为动画而产生任何变化,否则就各种呵呵了。。。

    2019-07-17 20:01:06
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载