Swift – définir des coins arrondis pour afficher une image d'annotation

Voici mon thread précédent, où je définis l'image pour les broches de vue d'annotation

Swift – définition de différentes images du tableau aux broches d'annotation

En ce moment j'ai rencontré un problème avec la mise en coins arrondis sur l'image de vue d'annotation.

cannot show callout with clipsToBounds enabled swift 

semble que je dois choisir entre des coins arrondis ou en montrant des légendes, je ne comprends pas vraiment pourquoi ces deux ne peuvent pas venir. Y'a-t'il un quelconque moyen d'y arriver? Voici ma fonction viewForAnnotation:

  func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if !(annotation is RestaurantAnnotation) { return nil } let reuseId = "restaurant" var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) if anView == nil { anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) anView.canShowCallout = false } else { anView.annotation = annotation } let restaurantAnnotation = annotation as RestaurantAnnotation if (restaurantAnnotation.image != nil) { anView.image = restaurantAnnotation.image! anView.layer.masksToBounds = true anView.layer.cornerRadius = (anView.frame.size.height)/10.0 } else { // Perhaps set some default image } return anView } 

Merci d'avance pour votre aide!

J'ai trouvé la solution pour cela et est-ce assez élégant je pense.

Plutôt que de modifier la couche de l'annotation, créez une UIImageView, attachez une image à celle-ci et ajoutez-la comme vue à l'annotation.

  let imageView = UIImageView(frame: CGRectMake(0, 0, 25, 25)) imageView.image = UIImage(named: cpa.imageName); imageView.layer.cornerRadius = imageView.layer.frame.size.width / 2 imageView.layer.masksToBounds = true anView.addSubview(imageView) 

Faites-moi savoir si cela fonctionne pour vous.

DZ

Juste pour append à la bonne réponse de Dizzie:

Ajout de la sous-vue de l'image fonctionne bien, mais la broche ne peut plus être cliqué. J'ai trouvé que changer la taille de la broche pour correspondre à l'image résout ce problème.

 anView.frame = imageView.frame 

Vous pouvez également déplacer la légende, en fonction de la taille de votre image.

 anView.calloutOffseet = CGPoint(x: 0, y: -10)