在模拟器中慢速CADisplayLink动画

时间:2017-01-09 08:30:58

标签: ios swift animation ios-simulator cadisplaylink

我有两种方法可以实现相同的精灵动画:

  1. UIImage使用animatedImage(with:duration:)动画显示6个图像的数组。
  2. UIView CALayer的{​​{1}}属性设置为精灵地图集图片 - 图层的contents属性通过contentsRect更新。为了确保帧速率独立性,我正在累积增量时间(或CADisplayLink),直到图像发生变化。当图像改变时,我从累积的增量时间中减去一个图像所需的经过时间,并且循环继续。
  3. 这两种方法在我的iPhone上工作得很好,看起来几乎相同(如果不相同)。但是,在模拟器中运行时,#1似乎以设备速度显示动画,而#2似乎显示为明显较慢的动画。

    当比较我的设备和模拟器的FPS时,设备平均大约为59.9到60 FPS,而模拟器显示恒定的60 FPS;这并不代表#2看起来明显变慢。

    那么,为什么模拟器中的#2会变慢?

    代码#1

    displayLink.duration

    #2的代码

    UIImage.animatedImage(with: spriteImages, duration: animationDuration)
    

1 个答案:

答案 0 :(得分:1)

基本上,CADisplayLink在模拟器中不能很好地工作。仅在设备上测试。