How to use Attributed String in SwiftUI
How to use AttributedString in SwiftUI. There is no API available to use AttributedString in Text
Solution 1:
iOS 15 and Swift 5.5
Text
now supports markdown and also you can create custom attributes:
You can even get defined attributes remotely like:
iOS 13 and 14
You can combine multiple Text
objects together with a simple +
operator and that will handle some of the attributions:
Each one can have multiple and specific modifiers
A fully supported fallback!
Since it doesn't support directly on Text
(till iOS 15), you can bring the UILabel
there and modify it in anyway you like:
Implementation:
struct UIKLabel: UIViewRepresentable {
typealias TheUIView = UILabel
fileprivate var configuration = { (view: TheUIView) in }
func makeUIView(context: UIViewRepresentableContext<Self>) -> TheUIView { TheUIView() }
func updateUIView(_ uiView: TheUIView, context: UIViewRepresentableContext<Self>) {
configuration(uiView)
}
}
Usage:
var body: some View {
UIKLabel {
$0.attributedText = NSAttributedString(string: "HelloWorld")
}
}
Solution 2:
The idea of attributed string
is string with attributes. In SwiftUI this idea is realised with Text
attributed modifiers and +
operator. Like in the below example:
Group {
Text("Bold")
.fontWeight(.bold) +
Text("Underlined")
.underline() +
Text("Color")
.foregroundColor(Color.red)
}