iOS踩过的坑之CAAnimation的Delegate

使用CAAnimation做layer图层的动画时,如果需要获取动画开始与结束的时机,则需要遵守CAAnimationDelegate协议,并实现协议中的两个方法:

    func animationDidStart(_ anim: CAAnimation) {
        let key = anim.value(forKey: animationKey) as! String
        if key == anisGroupKey {
            self.animationCompleted.value = false
        }
    }
    
    func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
        let key = anim.value(forKey: animationKey) as! String
        if key == anisGroupKey {
            self.animationCompleted.value = true
            //self.anisGroup.delegate = nil
        }
    }

但是,为了使视图能够在用完后释放掉,需要在合适的时机设置动画对象的delegate为nil,即上述代码注释部分。

同时,还需要:

self.animationView.layer.removeAllAnimations()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 10,579评论 3 23
  • 如果想让事情变得顺利,只有靠自己--夏尔·纪尧姆 上一章介绍了隐式动画的概念。隐式动画是在iOS平台创建动态用户界...
    夜空下最亮的亮点阅读 6,057评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,804评论 1 32
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,526评论 5 13
  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 8,374评论 1 23