当GMSMarker trackViewChanges设置为true时,整个视图FPS下降

时间:2016-11-30 17:21:41

标签: ios google-maps google-maps-sdk-ios

在适用于iOS的Google Maps SDK中,tracksViewChanges GMSMarker设置为true时,可能会为整个视图控制器中的其他视图设置上限。

一些事实开始:

  • VC有一张5 GMSMarkers的地图,以及一个带有相应的5个单元格的集合视图
  • 标记有自定义iconView
  • 滚动集合视图时,此集合中的单元格和标记应该动态更新其外观(渐进式动画直接与滚动事件相关联)

然而,滚动动画不稳定,除了60 FPS以外任何东西都很平滑。

你可能会说这是一个表演原因,但事实并非如此,请参阅:

  • Xcode报告内存使用率低且持续60 FPS。
  • 在iPhone 5到7上,性能问题具有100%可比性。
  • 当删除所有视图时(包括标记和集合视图单元格,仅设置了backgroundColor)并且没有调用任何动画方法,滚动仍然会感觉不稳定,尽管它不存在性能原因。
  • 与滚动相同,这也影响了一些平移交互,所以它不是滚动视图的唯一。

基本上,当所有标记都tracksViewChanges设置为false时,我就会获得天堂般的动画效果。即使我使用自定义UIViews伪造标记,FPS也不会删除所有,即使在旧设备上也是如此。

现在,如果我只设置一个标记以将tracksViewChanges设置为true,则FPS丢弃返回。已启用该参数的标记量无关紧要。我认为FPS会降低60 FPS以下,但在这种情况下,我们说的是30 FPS。

这会响铃吗?

0 个答案:

没有答案