如何实现每帧重绘视图的iOS自定义动画?

时间:2017-10-28 04:19:50

标签: ios swift core-animation caanimation

我需要一个自定义UIView,它会一直改变它的外观,但是,它的更改不在属性键路径上,因此无法用CABasicAnimationCATransition表示。我需要为每一帧重绘视图/图层(想想游戏主循环)。

我可以想到几种方法:

  • 设置一个重复的NSTimer来调用视图setNeedsDisplay。许多人认为这会降低应用程序的速度。

  • 使用CADisplayLink

    let displaylink = CADisplayLink(target: self, selector: #selector(step))    displaylink.add(to: .current, forMode: .defaultRunLoopMode)

    我不确定是否应该在步骤函数中调用setNeedDisplaydraw方法。而且我不知道这是否与方法1不同。

  • 实现CAAnimation的子类,并实现其CAAction协议并在那里重绘视图。

我想知道哪一个是最有效的,并没有减慢我的应用程序,以及为什么它比其他方法更有效(比如可能在另一个线程上实际绘图)?

0 个答案:

没有答案