如何跟踪屏幕渲染器

时间:2015-10-31 17:11:29

标签: ios core-animation react-native cadisplaylink

如何在React-Native

中将对象作为时间函数移动

在原生iOS中,我这样做:

CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

或者,如何在React-Native中跟踪屏幕渲染?

2 个答案:

答案 0 :(得分:2)

Reactive native在内部使用CADisplayLink在JS线程上执行帧更新。所以理论上你所做的一切都与屏幕的刷新率同步。

您可以使用Animated库(如果您希望通过拖动移动对象,也可以使用PanResponder),并且可以达到60fps。

如果仍然无法满足您的需求,您可以随时创建一个新的原生组件,并使用自己的显示计时器进行自己的渲染。

答案 1 :(得分:-1)

也许这些计时器功能会有所帮助......

计时器

  • setTimeout,clearTimeout
  • setInterval,clearInterval
  • setImmediate,clearImmediate
  • requestAnimationFrame,cancelAnimationFrame

requestAnimationFrame(fn)与setTimeout(fn,0)不同 - 前者将在所有帧刷新后触发,而后者将尽快触发(在iPhone 5S上每秒超过1000x)。

setImmediate在当前JavaScript执行块的末尾执行,就在将批量响应发送回本机之前。请注意,如果您在setImmediate回调中调用setImmediate,它将立即执行,它不会在两者之间回复原生。

Promise实现使用setImmediate作为其异步原语。

参考:https://facebook.github.io/react-native/docs/timers.html