CAShapeLayer动画不会触发animationDidStop

时间:2016-10-28 15:17:01

标签: swift animation core-animation tvos

使用Swift 3.0运行tvOS

基本应用程序,这是视图控制器中的代码...我希望在它消失后删除let searchTerm = 'somevalue'; return this.af.database.list('items', { query: { orderByChild: 'property', equalTo: searchTerm } }); 。动画效果很好,但完成方法CAShapeLayer永远不会被调用?

想要使用animationDidStop方法,但它不会编译。给我错误"方法不会覆盖其超类的任何方法"这肯定是错误的,override func animationDidStopanimationDidStop类的成员。

这段代码有什么问题?我可以用计时器或其他东西来解决这个问题,但这只是一种软糖。

CAAnimation

1 个答案:

答案 0 :(得分:4)

您正在设置形状图层的代理:

self.shapeLayer.delegate = self

但如果您想要调用animationDidStop,则必须设置动画的delegate,而不是图层:

fadeInAndOut.delegate = self

你说:

  

想要使用override func animationDidStop方法,但不会编译。给我错误“方法不会覆盖其超类中的任何方法”,这肯定是错误的,animationDidStopCAAnimation类的成员。

您正在视图控制器中实现此功能,而UIViewController未提供animationDidStop的基类实现,因此无需覆盖。

animationDidStop是由CAAnimationDelegate协议定义的方法,因此(a)视图控制器应声明其与该协议的一致性; (b)不要使用override关键字。