如何在Ios中添加一个customView xib作为注释?

当我使用googlemaps所有我必须做的是

let marker = GMSMarker() marker.position = postions.target marker.title = "TEST" marker.map = self.mapView let myCustomView:CustomView = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomView marker.iconView = myCustomView 

但是如果我使用MAPKIT,我将如何实现这一点。 Mycustomview是我创build的xib视图文件。

尝试将nib视图的对象像这样添加到注释视图中

  func mapView(_ mapView: MKMapView,viewFor annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation == true { return nil } let senderAnnotation = annotation as! MyAnnotation let pinReusableIdentifier = senderAnnotation.pinColor.rawValue var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: pinReusableIdentifier) if annotationView == nil { annotationView = MKAnnotationView(annotation: senderAnnotation, reuseIdentifier: pinReusableIdentifier) annotationView!.canShowCallout = true } let customView = (Bundle.main.loadNibNamed("directOrderView", owner: self, options: nil))?[0] as! directOrderView; var calloutViewFrame = customView.frame; calloutViewFrame.origin = CGPoint(x:-calloutViewFrame.size.width/2 + 30,y: -calloutViewFrame.size.height); customView.frame = calloutViewFrame; annotationView?.addSubview(customView) return annotationView } 

好的,我find了解决scheme

  func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation { return nil } var annotationView = self.mapView.dequeueReusableAnnotationView(withIdentifier: "Pin") if annotationView == nil{ annotationView = AnnotationView(annotation: annotation, reuseIdentifier: "Pin") annotationView?.canShowCallout = false }else{ annotationView?.annotation = annotation //annotationView?.canShowCallout = true // mapView.deselectAnnotation(annotation, animated: true) // mapView.selectAnnotation(annotation, animated: true) } let myCustomView:CustomView = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomView annotationView?.addSubview(myCustomView) // annotationView?.image = UIImage(named: "starbucks") return annotationView }