Configurable morphing transitions between text values of a label.
Triggering the animation is as easy as setting the labels text
property.
TOMSMorphingLabel is available through CocoaPods. To install it, simply add the following line to your Podfile:
platform :ios, '7.0'
pod "TOMSMorphingLabel", "~> 0.5"
Instantiate TOMSMorphingLabel as you would do with an UILabel results in a fully working thus morphing label.
TOMSMorphingLabel *label = [[TOMSMorphingLabel alloc] initWithFrame:CGRectMake(0, 42, self.view.frame.size.width, 42)];
[self.view addSubview:label];
Setting - and particularly changing - the labels text property will automatically morph the labels previous text to the new value.
label.text = @"Swift";
Setting the labels text property using setText:withCompletionBlock
will morph the labels as well as triggering the completion block when the animation is finished.
[label setText:@"Swift" withCompletionBlock:^{
NSLog(@"label.text is now 'Swift'");
}];
Note that the label will execute only one morph transition at a time. If the text value of the label changes during a transition - even if it changes multiple times - the label will invoke a transition to the youngest text value that was set.
TOMSMorphingLabel provides the possibility to configure the morphing transitions look and feel. The configurable properties are defined as follows:
animationDuration: CGFloat | Time that elapses between the setting of a new text value and the end of the morphing transition. Default: 0.37 |
characterAnimationOffset: CGFloat | Spatial propagation speed of the character shrink and alpha effect. Default: 0.25 |
characterShrinkFactor: CGFloat | Factor that the scale of a completely disappeared character is divided by. Default: 4 |
morphingEnabled: BOOL | Defines whether the morphing transition between text values is enabled. Default: YES |
- made custom configurable properties accessible by Interface Builder
- broke a strong reference cycle between
CADisplayLink
andTOMSMorphingLabel
- added invokation of the completion block when setting text without animations
- respect the global
[UIView areAnimationsEnabled]
state
- fixed a textColor glitch
- introduced
setText:withCompletionBlock:
- fixed a bug that caused a crash when setting text to nil
- added property to disable morphing
- added support for iOS6
- added unicode support
- initial version
I'd love to see your ideas for improving this library! The best way to contribute is by submitting a pull request or a new Github issue.
- @andrebraga added support for iOS6 in version 0.2.1
- @stepanhruda added property to disable morphing in version 0.2.2
- @itouch2 fixed a bug that caused a crash when setting text to nil in version 0.2.3
- @waynehartman fixed text color-change glitch in version 0.2.5
- @cyril94440 added
setText:withCompletionBlock:
in version 0.2.5 - @wanderwaltz broke a strong reference cycle between
CADisplayLink
andTOMSMorphingLabel
in version 0.5.0 - @wanderwaltz added invokation of the completion block when setting text without animations in version 0.5.0
- @wanderwaltz made
TOMSMorphingLabel
respect the global[UIView areAnimationsEnabled]
state in version 0.5.0 - @fcanas made custom configurable properties accessible by Interface Builder
TOMSMorphingLabel is available under the MIT license. See the LICENSE file for more info.