2010-07-22 27 views
1

Je suis tombé sur un problème où j'ai besoin d'animer le changement de hauteur du cadre UILabel ou du cadre de la vue qui l'entoure. L'étiquette est multiligne. Le problème est que donné avec un grand texte qui ne rentre pas initialement dans l'étiquette (disons qu'il faut 3 lignes), animant la hauteur de l'étiquette pour augmenter, changeant immédiatement 3 lignes en 4 et animant ensuite l'augmentation de l'image.Effet secondaire de redimensionnement animé UILabel

L'effet inverse est quand le texte s'inscrit entièrement dans l'étiquette (4 lignes), puis j'anime la diminution de la hauteur, 4 lignes deviennent instantanément 3 et seulement alors je vois la taille de l'image animée diminuer.

Ce n'est bien sûr pas bon pour un oeil. Ce que j'attends de quelque chose, c'est de garder l'origine de l'étiquette intacte et ensuite, à mesure que le cadre augmente, plus le texte est révélateur par le bas. L'ellipse peut se transformer en mot manquant instantanément, ce n'est pas un problème.

Répondre

0

Si vous souhaitez conserver origin.y intact, vous devez l'animer avec des éléments CoreAnimation. Définir une fois:

label.layer.anchorPoint = CGPointMake(0,0); //I believe 0,0 is the upper left or it was 0,1? 

après avoir fait cela, vous avez juste besoin de changer la taille accordinly:

Je mesurerait d'abord le texte (avec les méthodes de NSString) et voir si l'étiquette doit être redimensionné. Dans le cas où il est nécessaire d'ajuster ensuite label.numberOfLines et

Cela devrait fonctionner

J'espère que cela aide.