如何在常规 UIView 之上使用 MKPinAnnotationView(而不是在地图上)

Posted

技术标签:

【中文标题】如何在常规 UIView 之上使用 MKPinAnnotationView(而不是在地图上)【英文标题】:How can I use MKPinAnnotationView on top of a regular UIView (instead of on a map) 【发布时间】:2009-07-20 15:51:58 【问题描述】:

我正在编写一个包含自定义地图的 iPhone 应用程序——我自己的地图图像,而不是 Google 的。图片不是很大,所以我没有使用 RouteMe 之类的库,而是选择了一个带有嵌入图片(地图)的 UIScrollView。

我的问题是:是否可以在我的自定义 UIView 之上重新使用 Apple 的 MKPinAnnotationView 类,以便 pin 交互感觉与 MapKit 相同?到目前为止,我已经弄清楚如何在我的地图上添加一个图钉并定位它,但我不知道如何让用户与之交互——即弹出描述气泡。

有什么想法吗?非常感谢。

【问题讨论】:

您是如何将图钉添加到您的图片中的? 【参考方案1】:

您也许可以制作一个并使用添加子视图来显示它,您必须做一些工作才能使其显示在您想要的位置,因为您提供的坐标适用于 mkmaps

【讨论】:

【参考方案2】:

你有没有从 MKAnnotationView 看过这个方法:

(void)setSelected:(BOOL)选定动画:(BOOL)动画

这是唯一公开的可以显示/隐藏标注气泡的方法。除此之外,您必须对课程进行逆向工程并开始四处寻找。

但是,我强烈建议不要对类进行逆向工程并使用未公开公开的方法。 Apple 不承诺保持向后兼容性,如果他们发现您使用的是私有方法,他们会将您的应用从商店中踢出。

顺便说一句,完全披露,这些是 Apple 的 setSelected:animated 文档说明:

讨论 你不应该调用这个方法 直接地。一个 MKMapView 对象调用 此方法响应用户 与注解的交互。

【讨论】:

以上是关于如何在常规 UIView 之上使用 MKPinAnnotationView(而不是在地图上)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableViewController 之上添加 UIView [关闭]

Swift uiview 在 uitable 之上

UIView 之上的 AVPlayer

如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?

我想使用 SnapKit 将顶部 UIView 放置在 UITableView 之上

如何垂直自动布局 UIViews 列表,一个在彼此之上?