2009-07-13 6 views
3

J'ai une étiquette en haut de mon UIView.J'affiche des messages à travers le tableau à l'aide de la minuterie.Mais maintenant je veux que ces messages soient affichés dans le style MARQUEE. Je n'ai aucun moyen de commencer.Tout code source, méthodes à utiliser, n'importe quel style d'animation, toute approche différente. Merci à l'avanceComment ajouter une marque à une étiquette

+1

est-ce pas MARQUEE déconseillé? Vous ne devriez pas l'utiliser. Je crois que vous pouvez obtenir le même effet avec javascript. –

+2

@MercerTraieste Je ne pense pas que cette question pose une question sur la balise HTML 'marquee'. Il s'agit d'obtenir le même style que le tag de marque en utilisant la classe UILabel dans le SDK iPhone. – Jasarien

+0

[Cette question] (http://stackoverflow.com/questions/430942/resizable-uilabel-which-scrolls-across-the-screen) est très proche de ce que vous demandez. –

Répondre

9

Voici une idée:.

  • Set clipsToBounds true sur le UIView que votre UILabel est assis dans
  • Ensuite, démarrez un bloc UIViewAnimations (regarder dans la documentation pour savoir comment l'utiliser , son très simple)
    • Créer une nouvelle étiquette avec son cadre mis à une position qui est en dehors des limites de la enfermant UIView
    • définir la position de l'étiquette précédente à quelque part à gauche en dehors des limites de l'UIView
    • définir la position de l'étiquette suivante à l'endroit où l'étiquette précédente était.
  • commettras les animations

Cela devrait vous donner l'animation de glissement d'une étiquette en mouvement hors de l'écran et une nouvelle étiquette en mouvement à l'écran.

Vous aurez à jouer avec la propriété animationDuration et les propriétés précises de positionnement et de dimensionnement des étiquettes et des vues pour l'obtenir juste, mais cela devrait être assez simple.

4

J'ai suivi votre idée, et je l'ai fait:

* J'ai créé une vue du conteneur.

messageView = [[UIView alloc] initWithFrame:CGRectMake(27, 0, 235, 19)]; 
[messageView setClipsToBounds:YES];//With This you prevent the animation to be drawn outside the bounds. 

* Ensuite, je créé un UILabel avec le texte à afficher et ajouté à mon avis conteneur

lblTime = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 235, 19)]; 
[lblTime setBackgroundColor:[UIColor clearColor]]; 
[messageView addSubview:lblTime]; 

* Enfin j'ai créé une fonction comme ceci:

- (void)sendNotification:(NSString*)txt{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:3.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:messageView cache:YES]; 
    [lblTime setText:txt]; 
    [lblTime setTextAlignment:UITextAlignmentLeft]; 
    lblTime.frame = CGRectMake(260, 0, 258, 19); 
    [UIView commitAnimations]; 
} 
Questions connexes