Hi,
I'm using a ABTableViewCell
subclass ( http://github.com/enormego/ABTableViewCell ) as cells of a UITableView
. This improves scrolling smoothness a lot as cells have many elements including pictures, but I can't find how to create animations for a single element of a cell.
For example, when a image is loaded from the web, I'd like to make it appear in a short animation raising its alpha from 0 to 1. I have no trouble creating the animation for the whole cell's alpha, by doing this:
// self = ResultTableViewCell, inherits from ABTableViewCell
// Method called by the class loading the image asynchronously
(void)setImage:(UIImage *)i {
[image release];
if (i != nil)
image = [[UIImage imageWithCGImage:[i CGImage]] retain];
else
image = nil;
self.alpha = 0.0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
self.alpha = 1.0;
[UIView commitAnimations];
[self setNeedsDisplay];
}
But this obviously makes the whole cell disappear then gradually reappear. As self.image
is not a UIImageView
but a UIImage
I draw manually in drawContentView:
, I can't set its own alpha value for the animation.
I tried adding a class property for the UIImage
's alpha, putting it in place of self.alpha
in the code above, and use it in drawContentView
by calling drawInRect: blendMode: alpha:
for the image. But whatever handles animations doesn't make neither successive calls to the image's alpha setter nor to drawContentView
(which would have been a bit rough), so this has no effect.
What would be the solution?