i want to fade between two UIButton images for the purpose of setting favorites in a UITableView.
Currently the transition is done without effect - it just changes the images directly on click/touch:
trans_img = [UIImage imageNamed:@"fav_on.png"];
NSArray *subviews = [owningCell subviews];
UIButton *favbutton = [subviews objectAtIndex:2];
favbutton.imageView.animationImages =
[NSArray arrayWithObjects:trans_img,
nil];
[favbutton.imageView startAnimating];
Everything I found was a transition between UIViews :(
It would be nice if the image fav_off gets smoothly changed into fav_on and the other way round like a fadein/fadeout.
It seems like what you're looking for is this. It animates the images on a UIButton without adding new images, creating an array or changing alpha values!
CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"];
crossFade.duration = 0.7;
crossFade.fromValue = (id)oldImage.CGImage;
crossFade.toValue = (id)newImage.CGImage;
crossFade.removedOnCompletion = NO;
crossFade.fillMode = kCAFillModeForwards;
[button.imageView.layer addAnimation:crossFade forKey:@"animateContents"];
//Make sure to add Image normally after so when the animation
//is done it is set to the new Image
[button setImage:newImage forState:UIControlStateNormal];