Animación de la image de background de UIButton

¿Hay alguna manera de animar una vista de image de background de UIButton con un set de imágenes?

Logré hacerlo con la propiedad imageView, pero no pude encontrar una propiedad de background equivalente.

10x

Para cambiar una image de backround de botones, o text para ese asunto, debe cambiarlo para el UIControlState particular … es decir, resaltado, seleccionado, deshabilitado

Utilizar

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

No estoy seguro de si puedes animarlos, nunca lo he intentado. Si no puedes animarlos, puedes poner un UIImageView detrás de un button transparente y animar las imágenes en ese lugar, solo un pensamiento.

Esto es lo que hice (dentro de una subclass UIButton):

Establezca las imágenes de los botones, como regular:

 [self setBackgroundImage:[[UIImage imageNamed:@"button"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)] forState:UIControlStateNormal]; [self setBackgroundImage:[[UIImage imageNamed:@"button_pressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)] forState:UIControlStateHighlighted]; 

Anulación destacada:

 - (void)setHighlighted:(BOOL)highlighted { [UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowAnimatedContent animations:^{ [super setHighlighted:highlighted]; } completion:nil]; } 

Puede animar un UIButton UIImageView como anima un UIImageView como este …

 -(void) addAnimationToButton:(UIButton*) button{ UIImageView* animationView = [button imageView]; NSArray* animations=[NSArray arrayWithObjects: [UIImage imageNamed:@"sprite1.png"], [UIImage imageNamed:@"sprite2.png"], [UIImage imageNamed:@"sprite2.png"], //and so on if you need more nil]; CGFloat animationDuration = 2.0; [animationView setAnimationImages:animations]; [animationView setAnimationDuration:animationDuration]; [animationView setAnimationRepeatCount:0]; //0 is infinite } 

Y lo usas así:

 [self addAnimationToButton:yourButton]; [[yourButton imageView] startAnimating]; //or stopAnimating 

Sí, es posible. Use NSTimer,

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval: 5.00 target: auto selector: @selector (changeImage) userInfo: nil repeats: YES];

entonces, el método es el siguiente,

 - (void)changeImage { static int counter = 0; if([bannerArray count] == counter) { counter = 0; } [button setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bannerArray[counter]]]] forState:UIControlStateNormal]; counter++; } 

Funcionó para mí. Pero agregar animation como Flip, etc., necesita descubrirlo. Espero que esto también sea una forma de ayudar a su necesidad.