Ios 当GMSMarker tracksViewChanges设置为true时,整个视图FPS将下降

Ios 当GMSMarker tracksViewChanges设置为true时,整个视图FPS将下降,ios,google-maps,google-maps-sdk-ios,Ios,Google Maps,Google Maps Sdk Ios,在Google Maps SDK for iOS中,tracksViewChangesofGMSMarker,当设置为true时,可能会为整个视图控制器中的其他视图设置FPS上限 首先是一些事实: VC有一个带有5个GMSMarkers的映射,以及一个带有相应5个单元格的collectionview 标记具有自定义图标视图 滚动集合视图时,此集合中的单元格和标记应动态更新其外观(渐进式动画直接绑定到滚动事件) 然而,滚动的动画是起伏的,并且除了60 FPS的平滑外,任何东西都是不平滑的 您可

在Google Maps SDK for iOS中,
tracksViewChanges
of
GMSMarker
,当设置为
true
时,可能会为整个视图控制器中的其他视图设置FPS上限

首先是一些事实:

  • VC有一个带有5个GMSMarkers的映射,以及一个带有相应5个单元格的collectionview
  • 标记具有自定义图标视图
  • 滚动集合视图时,此集合中的单元格和标记应动态更新其外观(渐进式动画直接绑定到滚动事件)
然而,滚动的动画是起伏的,并且除了60 FPS的平滑外,任何东西都是不平滑的

您可能会说这是性能原因,但事实并非如此,请参见:

  • Xcode报告低内存使用率和恒定的60 FPS
  • 性能问题在iPhone 5到7上是100%可比的
  • 当删除所有视图(从标记和集合视图单元格中删除,仅设置背景色)且未调用任何动画方法时,尽管不存在性能原因,但滚动仍感觉不稳定
  • 与scroll相同,这也会影响一些平移交互,因此它不是滚动视图所独有的
基本上,当所有标记都将
tracksViewChanges
设置为
false
时,我实现了天堂般的动画效果。即使我用自定义UIView伪造标记,FPS也不会下降,即使在旧设备上也是如此

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


这有什么意义吗

你找到这个问题的原因了吗?我也有同样的问题。当我在iconView上更改某些内容时,我看到标记在更改的版本和未更改的版本之间快速闪烁。几乎就好像GMSMarker陷入了一个无休止的重画循环,减慢了一切。@Flitskikker嗯,我做了一个变通。我只使用标记和东西作为参考点,然后在一个单独的UIView中呈现所有实际的标记(GM SDK提供了实现这一点的方法)。地图上的标记是静态的,也就是说,帧速率来自天堂:)@dck你能举个例子吗?