MKAnnotationView的子类

时间:2010-10-22 05:44:56

标签: objective-c cocoa-touch mapkit mkannotationview

我想知道是否有人知道MKAnnotationView类的任何子类。在苹果文档中,他们说一个例子是MKPinAnnotationView,所以我想知道是否有其他预先创建的子类,如用于跟踪设备当前位置的子类。如果有人有关于创建我自己的MKAnnotationView类子类的提示,那么也很好。

谢谢, bubster

2 个答案:

答案 0 :(得分:9)

如果有人仍然对此感兴趣:

您可以使用Objective-C运行时函数获取类的所有子类,如下所述:http://cocoawithlove.com/2010/01/getting-subclasses-of-objective-c-class.html

从MKAnnotationView继承的其他类是:

MKTransitCalloutView,MKAdAnnotationView,MKUserLocationView,MKUserLocationBreadCrumbView和MKPinAnnotationView

其中MKPinAnnotationView是唯一记录的。所有其他都是Apple在内部使用的私人课程。

答案 1 :(得分:7)

我不知道任何其他模板,但这并不意味着它们不存在。 :)

无论如何,这里是如何创建自定义的: 创建符合MKAnnotation协议的新类。您需要具有名为NSString*title的{​​{1}}类型的两个实例变量,以及名为coordinate的类型subtitle之一和适当的setter方法(例如属性)。这些字符串将显示在标注中。在mapView的委托中,以与为UITableView实现数据源类似的方式实现方法CLLocationCoordinate2D。也就是说,通过标识符使annotationView出列,设置新属性(例如,用于右侧附件视图的UIButtonTypeDetailDisclosure类型的按钮)。您需要添加要在偏移下方显示的图像。只需使用MKAnnotationView的-mapView:viewForAnnotation:属性即可。自定义图像的中心将放置在指定的坐标处,因此您可能需要提供偏移:image

以下是一些示例代码:

aView.centerOffset = CGPointMake(0, -20)