A UILabel
that does true animation of attributed text.
It animates all text attributes that are possible to animate, unlike CATextLayer
that animates only font and color.
It also has a great support of multiline text animations while keeping almost all the benefits of being UILabel
.
It uses CoreText text rendering instead of CoreGraphics text rendering of CATextLayer
. That makes the text to look the same by advancement and line height as the text in regular UILabel
.
It is a great and simple building block for UI which implements material design.
- Documentation
- Unit Test Coverage
Installation >> instructions
<<
You can use either LKLabel
or LKLabelLayer
, both support implicitly animatable text change.
When the layer is hosted by LKLabel
, animations of text during bounds change are more stable.
Animating text change in LKLabel
can be something like this:
// Swift
self.label.superview.setNeedsLayout()
self.label.setNeedsLayout()
UIView.animate(withDuration: 3, delay: 0, options: [], animations: {
self.label.attributedText = attributedText
self.label.superview.layoutIfNeeded()
}, completion: nil)
// Objective-C
[self.label.superview setNeedsLayout];
[self.label setNeedsLayout];
[UIView animateWithDuration:3 delay:0 options:kNilOptions animations:^{
self.label.attributedText = attributedText;
[self.label.superview layoutIfNeeded];
} completion:nil];
Animating text change in LKLabelLayer
can be something like this:
// Swift
CATransaction.begin()
CATransaction.setAnimationDuration(3.0)
labelLayer.attributedText = attributedText
CATransaction.commit()
// Objective-C
[CATransaction begin];
[CATransaction setAnimationDuration:3.0];
labelLayer.attributedText = attributedText;
[CATransaction commit];
Refer to the
documentation
for the detailed description of possibilities.
LabelKit is released under the Simplified BSD license. See LICENSE for details.