JMAnimatedTextEntry allows you to easily animate text entry on UIKit components.
JMAnimatedTextEntry adds methods to UIKit components that have the text property. To animated the entry of text simply:
UILabel *label = ...;
[label jm_setText:@"Some text" animatedWithDuration:1.0 completion:^(BOOL finished) {
if (finished) {
// Text has finished animating.
} else {
// Text entry was interrupted.
}
}];If text is being animated and you need it to stop, simply call:
[label jm_stopTextAnimation];It's actually very easy to add JMAnimatedTextEntry methods to any class that has the text property. Let's say for example you have a label class that displays text in a spiral. You could enable animated text entry on it simply by adding the JMAnimatedTextEntry protocol:
@interface SpiralLabel : UIView <JMAnimatedTextEntry>
...
@property NSString *text;
...
@endAnd then adding the following to the +initialize method on the class:
+ (void)initialize {
if ([self class] == [SpiralLabel class]) {
[JMAnimatedTextEntryRegistration registerAnimatedTextEntryClass:[SpiralLabel class]];
}
}After this you can safely call:
SpiralLabel *spiralLabel = ...;
[spiralLabel jm_setText:@"Some spiral text" animatedWithDuration:0.5 completion:nil];At this point, this project most likely works but has not been extensively tested. It uses the Objective C runtime to add the JMAnimatedTextEntry methods to the classes which isn't exactly standard operating procedure.
JMAnimatedTextEntry is available under the MIT license. See the LICENSE file for more info.
