cuốn sách gpt4 ai đã làm

ios - MKOverlayRenderer 比 MKOverlayView 差?

In lại Tác giả: Hồ Xil 更新时间:2023-11-01 03:59:15 26 4
mua khóa gpt4 Nike

我正在开发一个高度基于 map 的应用程序,并且我正在使用 MBXMapKit 框架(基于 MapKit 构建)以便在我的 MapView 中显示自定义 Mapbox map 图 block 而不是默认的 Apple map 。然而,虽然 Apple 的 map 是矢量的,但 Mapbox 的仍然是栅格图像图 block ,因此它们被 MBXMapKit 框架显示为叠加层。

一切都很好,直到我使用 MKOverlay 在 map 上绘制多段线。据我了解,在 iOS 7 之前,您将向 MapView 委托(delegate)提供一个 MKOverlayView,它将呈现在 map 上,但现在在 iOS 7 中,它已被弃用,取而代之的是 MKOverlayRenderer,如果我理解正确的话,它的功能更像是某种 drawRect,我直接绘制到上下文中,结果显示在 map 上(我意识到这不完全是它是如何工作的,但关键是我无法再访问普通的旧 UIView,这就是我的问题所在。

第一个问题是,当我的叠加层被绘制到 map 上时,它似乎是逐个图 block 绘制的。这很好,只是叠加图 block 似乎与底层 Mapbox 图像图 block 合成了。这导致能够明显地看到具有 3 或 4 个点的简单多段线需要整整半秒的时间来渲染(在 A7 iPad Air 上),并且您可以看到它在重新绘制每个图 block 时以“ block ”形式出现。它还出于某种原因导致所有未受影响的 Mapbox 瓦片重新加载(它们都闪烁了一秒钟)。显然,从用户体验的角度来看,这看起来像个笑话,是完全不能接受的。

第二个问题是,因为我不再像在 iOS 6 中那样访问 UIView,所以我不知道如何为叠加层设置动画 - 我想要什么是淡化多段线而不是立即显示它(虽然此时我会立即显示整个东西而不是看着它逐 block 渲染就像它从点阵打印机中吐出来一样,但你明白我的意思).

所以我的主要问题是,我是否遗漏了什么,或者 MKOverlayRenderer 远不如 MKOverlayView 灵活和有用?从逻辑上讲,您希望能够将 map 上的图层视为可以操纵的单个对象,将事件绑定(bind)到它等,而不是将一些栅格像素数据刻录到 map 中并且永远无法再次修改或与(无需重新绘制整个事物)和 threads like this 进行交互似乎表明 Apple 基本上已经取消了使用覆盖层做很多事情的能力,而你过去可以很容易地做到这一点。

由于 MKOverlayView 现已弃用,因此不再调用相应的委托(delegate)方法,这些问题是否有解决方案?就目前而言,由于性能问题和缺乏动画功能,我无法将其用于生产应用程序。

编辑:我在绘制 MKOverlay 时注意到的另一个性能问题是它会影响在绘制时发生的其他动画 - 当我点击 map 注释时,工具提示会同时弹出一个动画折线渲染开始的时间 - 果然,渲染导致工具提示动画丢帧。

câu trả lời hay nhất

简短的回答是,是的,情况更糟。

在这里查看讨论 https://github.com/mapbox/mbxmapkit/issues/39正如 incanus(MBXMapKit 的作者)在 https://stackoverflow.com/a/22769258/2924596 中建议的那样

关于ios - MKOverlayRenderer 比 MKOverlayView 差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492077/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress