https://github.com/edudnyk/labelkit
A UILabel that does true animation of attributed text.
https://github.com/edudnyk/labelkit
animation catextlayer library swift uilabel
Last synced: 3 months ago
JSON representation
A UILabel that does true animation of attributed text.
- Host: GitHub
- URL: https://github.com/edudnyk/labelkit
- Owner: edudnyk
- License: other
- Created: 2019-06-19T22:30:05.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-10-10T10:59:00.000Z (almost 4 years ago)
- Last Synced: 2025-04-13T14:07:13.694Z (3 months ago)
- Topics: animation, catextlayer, library, swift, uilabel
- Language: Swift
- Homepage:
- Size: 125 KB
- Stars: 16
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 
[](https://travis-ci.org/edudnyk/LabelKit)
[](https://cocoapods.org/pods/LabelKit)
[](https://github.com/Carthage/Carthage)
[](https://swift.org)
[](https://github.com/edudnyk/LabelKit/releases)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.
## Features
- [x] [Documentation](https://edudnyk.github.io/LabelKit/index.html)
- [x] Unit Test Coverage## Requirements



Installation >> [`instructions`](https://github.com/edudnyk/LabelKit/blob/master/INSTALL.md) <<
## Usage
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
// 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
// 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
// Swift
CATransaction.begin()
CATransaction.setAnimationDuration(3.0)
labelLayer.attributedText = attributedText
CATransaction.commit()
``````objective-c
// Objective-C
[CATransaction begin];
[CATransaction setAnimationDuration:3.0];
labelLayer.attributedText = attributedText;
[CATransaction commit];
```> Refer to the [`documentation`](https://edudnyk.github.io/LabelKit/index.html) for the detailed description of possibilities.
## License
LabelKit is released under the Simplified BSD license. See [LICENSE](https://github.com/edudnyk/LabelKit/blob/master/LICENSE) for details.