SwiftUI Text と AttributedString
iOS 15 以降、SwiftUI の Text は AttributedString をサポートしています。これにより、文字列の一部分だけにスタイルを適用する処理がより柔軟に書けるようになりました。
AttributedString の基本
AttributedString を作成して Text に渡します。
var attributed = AttributedString("Hello, SwiftUI!")
attributed.foregroundColor = .blue
attributed.font = .title
Text(attributed)部分的なスタイル適用
文字列の一部だけにスタイルを適用できます。
var text = AttributedString("重要なお知らせがあります")
if let range = text.range(of: "重要") {
text[range].foregroundColor = .red
text[range].font = .body.bold()
}
Text(text)複数の範囲にスタイルを適用
var text = AttributedString("Swift は 速くて 安全 な言語です")
if let range = text.range(of: "速くて") {
text[range].foregroundColor = .orange
}
if let range = text.range(of: "安全") {
text[range].foregroundColor = .green
}
Text(text)リンクを埋め込む
AttributedString ではリンクも設定できます。
var text = AttributedString("詳しくは公式サイトをご覧ください")
if let range = text.range(of: "公式サイト") {
text[range].link = URL(string: "https://apple.com")
text[range].foregroundColor = .blue
}
Text(text)リンク部分はタップ可能になり、Safari などで開かれます。
下線や取り消し線
var text = AttributedString("下線と取り消し線のサンプル")
if let range = text.range(of: "下線") {
text[range].underlineStyle = .single
}
if let range = text.range(of: "取り消し線") {
text[range].strikethroughStyle = .single
text[range].strikethroughColor = .red
}
Text(text)AttributedString を使えば、Text の + 連結よりも複雑なスタイリングをコードで表現しやすくなります。












