2016-06-12 48 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開始可用 –