overboming/ZCAnimatedLabel
overboming/ZCAnimatedLabel has 2,263 GitHub stars and 214 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 22:08 UTC. Last push 2021-02-16.
UILabel replacement with fine-grain appear/disappear animation
What you can do
- Rich text support (with NSAttributedString)
- Group aniamtion by character/word/line
- Customizable animation start delay for each text block
- Great performance, only changed area is redrawn
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalZCAnimatedLabel
UILabel-like view with easy to extend appear/disappear animation
Features
- Rich text support (with NSAttributedString)
- Group aniamtion by character/word/line
- Customizable animation start delay for each text block
- Great performance, only changed area is redrawn
- Optional layer-based implementation
- 3D/Geometry transform support (layer based only)
- iOS 5+ compatibility
Demo
- Default

- Fall

- Duang/Spring

- Flyin

- Focus

- Shapeshift

- Reveal

- Thrown

- Transparency

- Spin

- Dash

- More to come
How to use
ZCAnimatedLabel is available via CocoaPods. If you don't need all the effect subclasses, simply drag ZCAnimatedLabel.(h|m), ZCCoreTextLayout.(h|m) and ZCEasingUtil.(h|m) into your project and start customizing your own.
Subclassing
ZCAnimatedLabel has two modes: non-layer based and layer based. In the first mode, ZCAnimatedLabel is a flat UIView, every stage of animation is drawn using Core Graphics, you can customize redraw area for your animation for better performance. Following methods can be overriden:
- (void) textBlockAttributesInit: (ZCTextBlock *) textBlock;- (void) appearStateDrawingForRect: (CGRect) rect textBlock: (ZCTextBlock *) textBlock;- (void) disappearStateDrawingForRect: (CGRect) rect textBlock: (ZCTextBlock *) textBlock;- (CGRect) redrawAreaForRect: (CGRect) rect textBlock: (ZCTextBlock *) textBlock;
Second option is layer based, where each text block is a simple CALayer, 3D tranform is possible in this mode by setting layer's transform property, if redraw area is bigger and not too many text blocks, this can achive a performance gain. Set self.layerBased to YES and override following methods for customization:
- (void) textBlockAttributesInit: (ZCTextBlock *) textBlock;- (void) appearStateLayerChangesForTextBlock: (ZCTextBlock *) textBlock;- (void) disappearLayerStateChangesForTextBlock: (ZCTextBlock *) textBlock;
Todo
- Merge CALayers no longer animating into a single backing store and reuse CALayer for animating layers. (Even better performance for layerBased implementation)
- More Effects, possily glyph related ones
- Use core animation emmiter
Thanks to
LTMorhpingLabelfor heavy inspiration. If you likeZCAnimatedLabel, you should definitely this one out.AGGeometryKitfor arbitrary shape 3D transform code piece used inZCDashLabel
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,487 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,294 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,771 starsmrdoob/three.js
JavaScript 3D Library.
117,842 stars