SMCalloutView 2.1.5

SMCalloutView 2.1.5

测试已测试
语言语言 Objective-CObjective C
许可证 Apache 2
发布最新版本2016年2月

Nick Farina 维护。



  • 作者
  • Nick Farina

概述

SMCalloutView 的目标是完全复制私有的 UICalloutView 系统控件。

我们都喜欢在点击 MKMapView 中的标记时得到的“气泡”。但是遗憾的是,无法在任何不在 MKMapView 之外的地方展示这种气泡式的“呼叫”UI。真可恶!所以这个类为了您的 convenience,痛苦地重新创建了这个方便的控制。

使用方法

要在您自己的项目中使用 SMCalloutView,只需复制文件 SMCalloutView.hSMCalloutView.m

默认情况下,SMCalloutView 将渲染为 iOS 7 中引入的新样式。如果您需要旧样式,只需将 SMClassicCalloutView.hSMClassicCalloutView.m 包含到您的项目中,即可。有一个特殊类构造函数 +[SMCalloutView platformCalloutView],它将自动选择当前平台合适的呼叫类。

SMCalloutView.h 中的注释对如何使用该类进行了大量解释,但您需要的主要功能是 presentCalloutFromRect:。您将指定您想添加调用到其中的视图以及定义弹出的“目标”应指向的矩形。目标矩形应位于目标视图的坐标系中(就像同名 UIPopover 方法一样)。这通常是作为目标视图的兄弟视图添加的弹出视图时 target.frame,如果是将弹出视图添加到目标本身中,则为 target.bounds

您可以通过查看包含项目中的 UIViewController 子类来学习一个有效示例。

问题

如何更改弹出的高度?

如果您只使用 title/titleView/subtitle/subtitleView 属性,则弹出的高度始终是“系统标准”。但是,如果您分配了 contentView 属性,弹出则会根据 contentView 的大小进行调整,并且忽略其他属性。

我可以自定义背景图形吗?

是的,弹出背景是 SMCalloutBackgroundView 实例。您可以设置自己的自定义 View 子类作为背景,或使用内置的子类之一。

  • SMCalloutMaskedBackgroundView 渲染 iOS-7 风格的背景。

  • SMCalloutImageBackgroundView 允许您指定组成可水平伸展背景的每个图像“片段”。

  • SMCalloutDrawnBackgroundView 使用CoreGraphics方法在任意大小上绘制背景。您可以复制 -drawRect 方法并修改参数以满足您的需求。

我能与Google Maps iOS SDK一起使用callout吗?

查看 ryanmaxwell的演示项目,这是实现这一功能的一种方法。(更多关于这个主题的讨论)

你是否重新创建了更多MapKit的功能?

不是,但是其他勇敢的程序员已经做到了!

  • 对于脉冲式的蓝色“当前位置”圆点的出色替换,请查看 Sam Vermette的SVPulsingAnnotationView

  • 至于户外地图数据和瓦片本身,请查看 Mapbox的iOS SDK,这是一个用于自定义地图的完整开源解决方案。它们甚至直接使用了 SMCalloutView

更多信息

如果您想了解更多信息,请参阅 博客文章