【问题标题】:GMSMarker rendering and lag issuesGMSMarker 渲染和延迟问题
【发布时间】:2019-06-05 14:47:36
【问题描述】:

我在 GMSMapView 中添加了 8 个标记

标记具有从 UIImage 和 UILabel 构建的简单自定义视图

标签应每 10 秒更改一次文本

问题是每次需要更改文本时,UI 都会出现一点延迟(滚动表格视图时最明显)

我这样做的方式是在一个循环中:

为了停止渲染并让 cpu 休息:
marker.tracksViewChanges = false

等待 10 秒...

为了使文本更改生效:
marker.tracksViewChanges = true

marker.custoView.label.text = "一些新文本"

继续循环

有没有办法在 UI 中不出现滞后问题?

【问题讨论】:

  • 我想设置标签是没有问题的。但 UIImage 可能是。您是否尝试在 DispatchQueue.main.async { ... } 内运行它?
  • 如果我删除图像也会发生这种情况。它猜测问题是因为整个视图在地图上再次重绘。问题是它只有 8 个标记......所以很奇怪
  • github.com/react-native-community/react-native-maps/issues/2082 - 它用于反应原生,但似乎 trackViewChanges 是罪魁祸首。查找问题,我发现了几个与问题有关的线程。这个看起来很可靠stackoverflow.com/a/49922839/4284508
  • 这正是我正在做的。当需要更改文本时,我将此属性设置为 true,更改文本,然后立即将此属性设置为 false。我没有他们谈论的 cpu 问题,因为大多数时候属性设置为 false,除了需要更改文本的那一刻

标签: swift gmsmapview


【解决方案1】:

好吧,如果有人感兴趣,我找到了某种解决方法:

我为应用代理的窗口添加了一个手势识别器。

现在,每次用户触摸屏幕时,我都会取消动画过程(marker.tracksViewChanges = false),然后重新安排。

这样,只有当应用是静态的且用户没有注意到时,才会出现延迟。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2016-01-10
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多