Skip to content
Format iOS attributed strings easily
Swift Other
  1. Swift 99.2%
  2. Other 0.8%
Branch: master
Clone or download
Latest commit e3dcfff Sep 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add build workflow Sep 11, 2019
Texstyle.xcworkspace Main logic Apr 29, 2019
Texstyle Merge branch 'master' into custom-operators Jul 19, 2019
TexstyleExample Update with code review remarks Jun 27, 2019
.gitignore Initial commit Apr 29, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Aug 24, 2019
LICENSE Main logic Apr 29, 2019
README.md Add build workflow Sep 11, 2019

README.md

Stylin

Swift Version Carthage Compatible codecov

Texstyle allows you to format attributed strings easily.

Features

  • Applying attributes with strong typing and autocompletion
  • Cache for attributes
  • Substyles
  • Convenient extensions for String and UIButton

Requirements

  • iOS 9.0+ / tvOS 9.0+
  • Xcode 10.0+

Usage

Here is a basic example of Texstyle using:

let text = Text(value: "Hello, World 🌍", style: .title1)
text.add(.heading1, for: "World")
titleLabel.attributedText = text.attributed

The result:

Example1

Let's start with text styles. There is a TextStyle class for configuring different style parameters like font, color, kerning etc. We prefer to use TextStyle extension for app specific styles:

extension TextStyle {

    static let title1: TextStyle = {
        let style = TextStyle()
        style.font = .systemFont(ofSize: 32, weight: .regular)
        return style
    }()
        
    static let heading1: TextStyle = {
        let style = TextStyle()
        style.font = .systemFont(ofSize: 28, weight: .semibold)
        style.color = .purple
        return style
    }()
}

It allows you to reuse the styles across the app.

Next, create a Text instance. It contains string value and style:

let text = Text(value: "Hello, World 🌍", style: .title1)

Text also supports independent styles for each UIControl.State. For example, if you want to use a different style for button highlight state, you should initialize text like:

let text = Text(value: " Sign in with Apple", styles: [.normal: .heading1,
                                                         .highlighted: .heading2])

To create an attributed string, just use:

//By default for normal state
text.attributed

//For needed state
text.attributed(for: .highlighted)

All attributed strings are cached by default. It's useful in reusable elements like UICollectionViewCell or UITableViewCell.

There are custom operators for texts and strings:

let text1 = Text(value: "Ros", style: .title1)
let text2 = text1 + "ber"
let text3 = Text(value: "ry", style: .title1)
let text4 = text2 + text3
text4.value // "Rosberry"

There are convenience APIs for text creation and applying:

//String to text
"Settings".text(with: .heading1)

//UIButton
button.setText(text)

Check TexstyleExample project for more examples.

Example2

Installation

Carthage

Create a Cartfile that lists the framework and run carthage update. Follow the instructions to add the framework to your project.

github "rosberry/Texstyle"

Manually

Drag Sources folder from last release into your project.

About

This project is owned and maintained by Rosberry. We build mobile apps for users worldwide 🌏.

Check out our open source projects, read our blog or give us a high-five on 🐦 @rosberryapps.

License

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

You can’t perform that action at this time.