Swiftpack.co -  lexrus/LTMorphingLabel as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
[EXPERIMENTAL] Graceful morphing effects for UILabel written in Swift.
.package(url: "https://github.com/lexrus/LTMorphingLabel.git", from: "spritekit-sparkle")


Travis Language CocoaPods Carthage compatible Accio supported License

A morphing UILabel subclass written in Swift. The .Scale effect mimicked Apple's QuickType animation of iOS 8 of WWDC 2014. New morphing effects are available as Swift extensions.

enum LTMorphingEffect: Int, Printable

.Scale - default










.Sparkle is built on top of QuartzCore.CAEmitterLayer. There's also a SpriteKit powered version here.







public var body: some View {
    VStack {
            "Awesome Morphing Text",
            effect: .evaporate,
            font: UIFont.systemFont(ofSize: 20),
            textColor: .black,
            textAlignment: .center
        ).frame(maxWidth: 200, maxHeight: 100)


  1. Xcode 12
  2. iOS 9.0+


Swift Package Manager

  1. File > Swift Packages > Add Package Dependency
  2. Copy & paste https://github.com/lexrus/LTMorphingLabel then follow the instruction


XCFramework is a new option introduced in Xcode 11. You can manually download the pre-compiled LTMorphingLabel.xcframework.zip from the Releases page. Then drag and drop it into your project.


  1. Add this line to your Cartfile: github "lexrus/LTMorphingLabel"
  2. Read the official instruction


  1. Install the latest release of CocoaPods: gem install cocoapods
  2. Add this line to your Podfile: pod 'LTMorphingLabel'
  3. Install the pod: pod install


  1. Add the following to your Package.swift:
.package(url: "https://github.com/lexrus/LTMorphingLabel.git", .upToNextMajor(from: "0.9.2")),
  1. Next, add LTMorphingLabel to your App targets dependencies like so:
    name: "App",
    dependencies: [
  1. Then run accio update.


  1. Change the class of a label from UILabel to LTMorphingLabel;
  2. Programmatically set a new String to its text property.
  3. To use interactively, call .pause() after changing .text property, and use updateProgress(progress: Float)to update the progress interactively.

Unit tests

Open the project with Xcode then press command + u.


Even though this lib was used in a few products on App Store, it’s still an experimental project. Frankly, there’re some nice competitors out there guarantee both compatibility and stability. And the most outstanding one is ZCAnimatedLabel. I’d like to recommend it for production use.

And finally, an Android port.

Third Party Bindings

React Native

You may now use this library with React Native via the module here


This code is distributed under the terms and conditions of the MIT license.


Stars: 7572
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

20 weeks ago

Since the forthcoming Carthage will support xcframework by design, I'll not provide precompiled old-school Carthage binary frameworks anymore. carthage update --use-xcframeworks

Screen Shot 2021-01-21 at 2 32 30 PM Screen Shot 2021-01-21 at 2 36 09 PM

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API