2016-06-12 30 views
2

我有一个带有标注和字幕标注的mapView。字幕有时比注释的宽度更长,所以我想知道如果我能让它们成为多行吗? 它编码这样至今:MapView注释中较长的字幕(swift)

func annotate(newCoordinate, title: String, subtitle: String) { 
    let annotation = MKPointAnnotation() 
    annotation.coordinate = newCoordinate 
    annotation.title = title 
    annotation.subtitle = subtitle 
    self.map.addAnnotation(annotation)  
} 

,我已在

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {...} 

设置一些选项,这些选项不是与此有关。

是否可以制作自定义注释视图? 我尝试了几件事,但没有奏效。我能得到的最接近的是添加一个按钮来分别显示较长的字幕,但我宁愿将它放在注释中。

这可能吗?

+0

PLZ看到这个链接http://stackoverflow.com/问题/ 5831382/how-to-display-2-lines-of-text-for-subtitle-of-mkannotation-and-change-the-image –

+0

for swift http://stackoverflow.com/questions/37446219/swift- 2-multiline-mkpointannotation –

回答

8

我想通了,我在viewForAnnotation添加一个标签,它只是工作

¯\ _(ツ)_ /¯

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 
    } 
    else { 
     pinView!.annotation = annotation 
    } 

    //THIS IS THE GOOD BIT 
    let subtitleView = UILabel() 
    subtitleView.font = subtitleView.font.fontWithSize(12) 
    subtitleView.numberOfLines = 0 
    subtitleView.text = annotation.subtitle! 
    pinView!.detailCalloutAccessoryView = subtitleView 


    return pinView 
} 
+0

很好的答案,但“detailCalloutAccessoryView”自9.0开始可用 –