在每一帧上执行drawRect?

时间:2015-06-04 08:58:15

标签: ios swift core-animation

我正在尝试实现一个自定义视图,它可视化实时变化的值(例如音频输出的音量),为了实现这一点,我想让drawRect执行每个动画帧来渲染值的正确视图状态。

我能想到的唯一解决方案是将计时器设置为每秒执行60次,并调用view.setNeedsDisplay(),但我确信这不是获得此行为并保证平稳性能的最佳方法。 / p>

编辑以提供略微更具体的示例

所以我的情况基本上是这样的:

//There is a variable which is changing continuously
var dynamicFoo : Double!

//I want to create a view class which renders foo in real-time
class fooVisualizerView : UIView {

   //I have drawing code which renders foo at any given value
   override func drawRect(rect: CGRect) {
       valueDependantDrawFunction(dynamicFoo)
   }

}

理想情况下,我希望fooVisualizerView重绘每个动画帧。

1 个答案:

答案 0 :(得分:2)

[viewA addGestureRecognizer: viewAGestureRecognizer]; 听起来像你想要的 - 这实际上是每次更新屏幕时调用的计时器。您可以从显示链接方法中调用CADisplayLink

请注意,您的代码需要在1/60秒内完成此方法,否则它看起来很糟糕。