Cómo mover text de derecha a izquierda en ios programáticamente

Quiero mostrar algún text en mi aplicación como mover text (Desplazamiento con animation de derecha a izquierda). No sé cómo hacer esto de manera programática?

Tomé UIViewcontroller . Estoy desarrollando AVAudioplayer en la parte superior de UIViewController el text se moverá de derecha a izquierda.

En primer lugar, toma una label en su vista y establece su marco fuera de la vista como sigue.

  - (void)viewDidLoad { [super viewDidLoad]; la = [[UILabel alloc]initWithFrame:CGRectMake(320, 100, 200, 60)]; la.text = @"This is my music line"; [self.view addSubview:la]; [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(LabelAnimation) userInfo:nil repeats:YES]; } 

Ahora que la label da animation como el método a continuación llamado en ViewDidLoad

 -(void)LabelAnimation { [UIView animateWithDuration:3.0f delay:0.0f options:UIViewAnimationOptionTransitionNone animations:^{ la.frame = CGRectMake(-320, 100, 200, 60); } completion:^(BOOL finished) { la.frame = CGRectMake(320, 100, 200, 60); }]; } 

La salida está debajo.

introduzca la descripción de la imagen aquí

  UILabel*label=[[UILabel alloc]init]; label.text=@"Song Name"; label.frame=CGRectMake(321, 20, 300, 30); [self.view addSubview:label]; [UIView beginAnimations:@"" context:nil]; [UIView setAnimationDuration:20.0]; label.frame=CGRectMake(0, 20, 300, 30); [UIView commitAnimations]; 

O puede probar esto si quiere repetir el desplazamiento del text

 UILabel*label=[[UILabel alloc]init]; label.text=@"Song Name"; label.frame=CGRectMake(321, 20, 300, 30); [self.view addSubview:label]; [UIView animateWithDuration:5.0 delay:0.0 options: UIViewAnimationOptionRepeat animations:^{ label.frame=CGRectMake(-100, 20, 300, 30); }completion:^(BOOL finished){ }]; 

// Llama a este método donde necesites esto. // y en este método escribe estas 4 líneas de código

 [self Message:@"test"]; - (void)Message:(NSString *)messageString { UILabel *label = [[UILabel alloc] initWithFrame:(CGRectMake(321, 20, 300, 30))]; label.text = messageString; label.backgroundColor = [UIColor clearColor]; [self.view addSubview:label]; [UIView beginAnimations:@"test" context:nil]; [UIView setAnimationDuration:3]; [UIView setAnimationDidStopSelector:@selector(Message:)]; [UIView setAnimationDelegate:self]; label.frame = CGRectMake(-100, 20, 300, 30); [UIView commitAnimations]; } enter code here 

Funciona..

podrías probar esta

 [UIView animateWithDuration:15.0f animations:^{ Moving_Cloud.frame = CGRectMake(320.0f, 30.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height); } completion:^(BOOL finished){ }]; 

aquí "Moving_Cloud" es la vista de mi image, así también puedes probar tu label.

Yo puedo usar Bloques de Animation UIView para eso

  [UIView animateWithDuration:5.0f delay:0.0f options:UIViewAnimationOptionTransitionNone animations:^{ yourLabel.center = CGPointMake(0, yourLabel.center.y); } completion:NULL ]; 

Y si quieres algo así como autoreverses

 [UIView animateWithDuration:5.0f delay:0.0f options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionBeginFromCurrentState animations:^{ yourLabel.center = CGPointMake(0, yourLabel.center.y); } completion:NULL ]; 

Use el método a continuación.

 - (void)marqueeLabel:(UILabel *)label { __block UILabel *labelToBeMarqueed = label; __block CGRect labelFrame = labelToBeMarqueed.bounds; labelFrame.origin.x = [UIScreen mainScreen].bounds.size.width; labelToBeMarqueed.frame = labelFrame; [UIView animateWithDuration:2.0f animations:^{ labelFrame.origin.x = -[UIScreen mainScreen].bounds.size.width; labelToBeMarqueed.frame = labelFrame; } completion:^(BOOL finished) { [self marqueeLabel:label]; }]; } 

Pase la label que desea mover de derecha a izquierda a este método. Agregue una condición para detener la animation ya que este método bucea continuamente. Puede cambiar la duración de la animation según sea necesario.

EN Swift puede implementarlo de esta manera

 override func viewDidLoad() { super.viewDidLoad() marqueeLabel = UILabel(frame: CGRectMake(320, 100, 400, 60)) marqueeLabel.text = "Your music title here" self.view.addSubview(marqueeLabel) UIView.animateWithDuration(10.0, delay: 0.0, options: [.Repeat], animations: { () -> Void in self.marqueeLabel.frame = CGRectMake(-320, 100, 400, 60) }, completion: { (finished: Bool) -> Void in self.marqueeLabel.frame = CGRectMake(320, 100, 400, 60) }); }