2009-01-10 4 views
10

A droite, j'essaie d'obtenir une étiquette avec du texte (déjà fait de toute évidence), qui défile sur l'écran.UILabel redimensionnable qui défile sur l'écran

Le texte entré dans l'étiquette est fait par un UITextField et un UIButton. Cela met à jour bien.

Mais j'essaye d'obtenir que le UILabel soit redimensionné en fonction de la quantité de saisie de texte, de sorte que le lot entier de texte défile sur l'écran.

C'est le code que j'ai au moment de l'étiquette de défilement:

[lblMessage setText: txtEnter.text]; 

CABasicAnimation *scrollText; 

scrollText=[CABasicAnimation animationWithKeyPath:@"position.x"]; 
scrollText.duration = 3.0; 
scrollText.repeatCount = 10000; 
scrollText.autoreverses = NO; 
scrollText.fromValue = [NSNumber numberWithFloat:500]; 
scrollText.toValue = [NSNumber numberWithFloat:-120.0]; 

[[lblMessage layer] addAnimation:scrollText forKey:@"scrollTextKey"]; 

Le problème est, commence parfois défile au milieu de l'écran, et disparaît parfois avant qu'elle ait complètement disparu acrosss.

Il coupe également du texte en raison de l'étiquette étant une taille .. Je ne sais pas comment changer cela.

Merci d'avance.

Dom

Répondre

7

je crois quelque chose de similaire à the solution for this question travaillerait pour ce cas.

Vous pouvez intégrer UILabel dans un UIScrollView, avec UIScrollView défini à la taille maximale de l'étiquette que vous souhaitez afficher à la fois sur l'écran. UIScrollView doit avoir ses indicateurs de défilement désactivés à l'aide de ses propriétés showsHorizontalScrollIndicator et showsVerticalScrollIndicator. Lors d'un changement de texte, vous pouvez effectuer les opérations suivantes:

[lblMessage setText: txtEnter.text]; 
[lblMessage sizeToFit]; 
scrollView.contentSize = lblMessage.frame.size; 

suivi du code d'animation de balayage panoramique comme décrit dans la question ci-dessus liée, avec le cadre à Enrobés d'être l'extrême droite de la UILabel. Cela entraînerait le défilement du texte à un taux constant sur l'étiquette. Si vous souhaitez que l'étiquette retourne au début, vous pouvez utiliser les méthodes UIView setAnimationRepeatAutoreverses: et setAnimationRepeatCount: au début de votre bloc d'animation.

2

Le redimensionnement de l'étiquette a très bien fonctionné!

Maintenant, j'ai mis l'étiquette dans le scrollview et j'ai cela qui apparaît .. mais je ne suis pas sûr maintenant des animations exactes à ajouter à cela. J'ai essayé certains d'entre eux sur le lien que vous m'avez donné, mais ils ne fonctionnent pas.

EDIT: Peu importe, tout fonctionne maintenant. CGPointMake (x, x) est ce dont j'avais besoin pour le contentOffset.