2009-12-18 4 views
1

J'essaie d'ajouter un UILabel à un MKAnnotationView en tant que leftCalloutAccessoryView juste après qu'une broche ait été sélectionnée pour la première fois dans MKMapView. L'ajout de l'étiquette n'est pas un problème: la légende est sélectionnée et s'ouvre, et c'est quand j'ajoute l'étiquette à la vue de la légende. La légende est automatiquement étendue vers la gauche avec une animation de diapositive, et la nouvelle étiquette comprenant 2 lignes est affichée. Malheureusement, je dois ajouter l'étiquette après que le Pin a été sélectionné parce que j'ai besoin de certaines informations sur ce Pin en premier.Texte UILabel flou dans la vue accessoire de MKAnnotationView

Le problème est maintenant que le texte de cette étiquette est quelque peu "flou", comme s'il n'était pas rendu correctement. Lorsque je désélectionne la légende et que je la sélectionne à nouveau, tout est dessiné correctement.

C'est la façon dont j'ajouter l'étiquette:
Lors de la création du MKPinAnnotationView je me inscrire à titre d'observateur pour la propriété « choisi » de la vue, car il n'y a pas de méthode de délégué pour la sélection de la broche. Lorsque la broche est sélectionnée dans la vue, ma méthode d'observation se déclenche et ajoute simplement l'étiquette de texte à la vue. (créez UILabel avec 2 lignes, une couleur d'arrière-plan claire et une police de caractères blanche en gras, définissez leftCalloutAccessoryView, libérez l'étiquette). J'ai essayé setNeedsDisplay, setNeedsLayout et plusieurs autres choses, mais peu importe, le texte est toujours flou dans l'étiquette jusqu'à ce que le Pin soit sélectionné pour la deuxième fois.

Une idée de comment je peux obtenir cette étiquette à dessiner correctement sans être flou?

Merci d'avance! Etes-vous sûr que votre étiquette est située sur une limite de pixels?

Répondre

3

J'ai vu la blurryness quand j'ai calculé un cadre d'étiquette par programme et pas pris en compte que mes calculs pourraient renvoyer une valeur non-entière pour l'origine.

+0

Je pense que oui ... Je crée l'étiquette en utilisant UILabel * label = [[UILabel alloc] initWithFrame: CGRectMake (5, 0, 30, 30)]; Je suppose que le cadre de l'étiquette est placé par rapport à la vue de la broche parentale. Lorsque la vue est là et la légende s'ouvre, elle dessine correctement –

+0

A travaillé pour moi. Merci! –

Questions connexes