2016-09-15 48 views
0

Swift - Custom MKAnnotationView, set label title如何使用自定義MKAnnotationView在視圖 - 控制

此鏈接告訴我如何創建自定義的註釋。我是IoS應用程序的新手。試圖瞭解如何在代碼中使用它。 我想更改通話中的字體,並有2行而不是1行。看起來這個類可以做到這一切,但我不知道如何在視圖控制器中使用它來改變字體。目前,這是我和已經創建的類的建議中的鏈接:

let annotation = MKPointAnnotation() 
annotation.coordinate = coordinate    
annotation.title=title 
self.map.addAnnotation(annotation) 

如何改變這種使用自定義類?

感謝

拉姆

回答

0

如何改變這種使用自定義類?

您必須明白註釋和註釋視圖之間存在差異。前者是與地圖的某個點或區域相關聯的對象。您可以將註釋添加到地圖視圖中,然後地圖視圖負責確定何時需要顯示特定註記,以便您不必擔心地圖的哪部分是可見的,縮放級別是什麼,等等。如果您想在註釋本身中存儲某種自定義數據,您可以創建MKAnnotation的子類。例如,有一個MKUserAnnotation子類添加heading屬性;你可以在你自己的註解子類中做同樣的事情。

註釋查看提供註釋的可視表示。地圖視圖可以包含數百或數千個註釋,但通常只有少數這些註釋需要隨時顯示。當地圖視圖想要顯示註釋時,它會調用它的委託方mapView(_:viewFor:)方法,並且委託返回爲相關注釋配置的適當註解視圖。如果您想使用自己的MKAnnotationView子類,如問題標題所示,那麼您應該在地圖視圖委託中實施mapView(_:viewFor:),使其實例化*您自定義MKAnnotationView子類的一個實例,對其進行配置並返回它。

*之前您的地圖視圖的委託實際上創建了一個新的註解視圖,您應該調用地圖視圖的方法dequeueReusableAnnotationView(withIdentifier:),這可能會返回您可以改用創建一個新的視圖。重複使用註釋視圖與UITableView重用表格單元格很相似;在這兩種情況下,這個想法都是爲了避免不斷創造和摧毀短暫的觀點。這些都是在文檔中解釋的,所以請在這裏查看完整的解釋。

+0

感謝很多:

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 } } 

創建自定義的註解視圖可以使用MKPointAnnotation,你開始你的代碼只是設置而不是爲詳細解釋。讓我消化所有這些,也許我將能夠實施。 –

0

您需要實現的的MKMapView委託方法:

annotation.canShowCallout = true 
相關問題