Swift - Custom MKAnnotationView, set label title
此链接告诉我如何创建自定义注释。我是IoS app的新手。试图了解如何在代码中使用它。 我想更改调用中的字体并且有2行而不是1行。看来这个类可以做到这一切,但我不知道如何在视图控制器中使用它来更改字体。目前,这就是我所拥有的,并按照链接中的建议创建了该类:
let annotation = MKPointAnnotation()
annotation.coordinate = coordinate
annotation.title=title
self.map.addAnnotation(annotation)
如何更改此选项以使用自定义类?
感谢
拉姆
答案 0 :(得分:0)
如何更改此选项以使用自定义类?
您必须了解注释和注释视图之间的区别。前者是与地图的某个点或区域相关联的对象。您可以在地图视图中添加注释,然后地图视图会确定何时需要显示特定注释,这样您就不必担心地图的哪个部分可见,缩放级别是什么如果要在注释本身中存储某种自定义数据,则可以创建MKAnnotation
的子类。例如,有一个MKUserAnnotation
子类,它添加了heading
属性;你可以在你自己的注释子类中做同样的事情。
注释视图提供注释的直观表示。地图视图可以包含数百或数千个注释,但通常只需要在其中显示少数几个注释。当地图视图想要显示注释时,它会调用它的委托mapView(_:viewFor:)
方法,并且委托会返回为相关注释配置的相应注释视图。如果您想使用自己的MKAnnotationView
子类,正如您的问题标题所示,那么您应该在地图视图委托中实现mapView(_:viewFor:)
,以便它实例化 * 您的实例自定义MKAnnotationView
子类,配置它,然后返回它。
* 在您的地图视图委托实际创建新的注释视图之前,您应该调用地图视图的dequeueReusableAnnotationView(withIdentifier:)
方法,该方法可能会返回您可以使用的视图创建一个新的。重用注释视图很像UITableView
重用表格单元格的方式;在这两种情况下,我们的想法是避免不断创造和破坏短命的观点。这些都在文档中解释,所以请查看完整的解释。
答案 1 :(得分:0)
您需要实现MKMapView的委托方法:
success_url
您可以在刚开始设置代码时使用MKPointAnnotation,而不是创建自定义注释视图:
import UIKit
import MapKit
extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate
{
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
{
...
}
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is MKUserLocation {
//return nil so map view draws "blue dot" for standard user location
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView.canShowCallout = true
pinView.animatesDrop = true
pinView.pinColor = .Purple
}
else {
pinView!.annotation = annotation
}
return pinView
}
}