Skip to content

A SwiftUI library that extends the Text view with ways to customize the design of any part of its text.

License

Notifications You must be signed in to change notification settings

danielsaidi/TextReplacements

Repository files navigation

Project Icon

Version Swift 6.1 Swift UI Documentation MIT License Sponsor my work

TextReplacements

TextReplacements is a SwiftUI library that extends the Text view with ways to customize any parts of its text.

TextReplacements works on all major Apple platforms and is designed to be easy to use.

Installation

TextReplacements can be installed with the Swift Package Manager:

https://github.com/danielsaidi/TextReplacements.git

Support My Work

You can become a sponsor to help me dedicate more time on my various open-source tools. Every contribution, no matter the size, makes a real difference in keeping these tools free and actively developed.

Getting Started

Text Replacements

TextReplacements let you create a Text with one or multiple text replacements. For instance, the preview above was created like this:

Text(
    "TextReplacements is a SwiftUI library that extends the Text view...",
    replacements: [
        "TextReplacements": {
            Text($0)
                .font(.title)
                .fontWeight(.black)
                .fontDesign(.rounded)
                .foregroundColor(.green)
        },
        "SwiftUI": {
            Text($0)
                .font(.headline)
                .fontWeight(.black)
                .fontDesign(.rounded)
                .foregroundColor(.blue)
        },
        "Text": {
            Text($0)
                .fontWeight(.black)
                .fontDesign(.rounded)
                .foregroundColor(.primary.opacity(0.6))
        }
        ...
    ]
)

Since each text replacement must return a Text result, we can only apply view modifiers that return a Text. This brings some limitations, like not being able to apply a background color to individual components.

Text Components

TextReplacements lets you initialize a Text view with a collection of texts and links:

Text(
    .text("You must accept our"),
    .link("terms & conditions", .init(string: "https://danielsaidi.com")),
    .text("to use this app. See our"),
    .link("website", .init(string: "https://danielsaidi.com")),
    .text("for more information.")
)
.textLinkStyle(.boldItalic)
.accentColor(.orange)
.foregroundColor(.blue)
.padding()

The resulting text is rendered as Markdown, which makes it possible to use plain view modifiers to style the view.

Documentation

This package will be documented once it gets more than 100 stars.

Demo Application

This package will get a demo application once it gets more than 100 stars.

Contact

Feel free to reach out if you have questions or want to contribute in any way:

License

TextReplacements is available under the MIT license. See the LICENSE file for more info.

About

A SwiftUI library that extends the Text view with ways to customize the design of any part of its text.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project