AUIAnimatableText is a drop-in UILabel replacement that uses CATextLayer instead of the regular CALayer, and thus making almost all the properties animatable.
- textColor
- text
- font
- fontSize
- Add AUIAnimatableText.h+m and UIFont+CoreTextExtensions.h+m to your project
- Link your project with CoreText.framework and QuartzCore.framework (In your project's settings, go to "Build Phases" and there to "Link Binary With Libraries")
- Change the class of your labels from UILabel to AUIAnimatableText in code or in interface builder
- That's it.
After doing the above steps you can simply change the label's properties inside a UIView animation block and they will change animated.
To get the duration to work properly it looks like you need to use:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.7f] forKey:kCATransactionAnimationDuration];
{...new layout code here...}
[CATransaction commit];
(I'm not sure if CATransaction supports block-style animation, this is just what I've found out so far.