AttributedText is a view for displaying some HTML-tagged text using SwiftUI Text View.
A simple example of usage.
Code example:
AttributedText("A unit of <i>length</i> equal to <b>one hundred-millionth of a centimetre</b>, 10<sup>−10</sup> metre, used mainly to express <u>wavelengths and interatomic distances</u>.")
Result:
You can clone the repo and run the AttributedTextExample project to explore the AttributedText
features.
These are the main points to pay attention to.
You can define the tags you need or use the defaults.
You need to set the required tags and provide associated closures. Each closure must be a modifier that is applied to the SwiftUI Text View when a specific tag is encountered.
@main
struct ExampleApp: App {
init() {
AttributedText.tags = [
"b": { $0.bold() },
"i": { $0.italic() }
]
}
}
In this case only <b> and <i> tags will be processed. All other tags will be ignored or deleted.
private let tags: Dictionary<String, (Text) -> (Text)> = [
// Set the necessary values.
]
var body: some View {
AttributedText("Text", tags: tags)
}
Basic modifiers can still be applied, such as changing the font and color of the text.
Code example:
AttributedText("This is <b>bold</b> and <i>italic</i> text.")
.foregroundColor(.blue)
.font(.title)
Result:
Handles unopened/unclosed tags.
Code example:
AttributedText("This is italic</i> and <b>bold text.")
Result:
Supports overlapping tags.
Code example:
AttributedText("This is <b>bold only, <i>bold and italic</b> and italic only</i> text.")
Result:
Deletes tags that have no modifiers.
Code example:
AttributedText("<unknown>This is <b>bold</b> and <i>italic</i> text.</unknown>")
Result:
Does not handle HTML characters such as &
.
Code example:
AttributedText("This is <b>bold</b> & <i>italic</i> text.")
Result:
Only single-word tags are supported. Tags with more than one word or containing any characters besides letters or numbers are ignored and not removed.
Code example:
AttributedText("This is <tag attribute1=\"value1\"> <b>bold</b> and <i>italic</i> text</tag>.")
Result:
File ▸ Swift Packages ▸ Add Package Dependency
.link |
Stars: 54 |
Last commit: 2 years ago |
Added the ability to set custom tags.
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics