英語607877 views
ヒストリア284143 views
いろは2986023 views
MathPython491378 views
雑学1472593 views
高校化学2913383 views
高校物理158224 views
世界の国560595 views
教育148875 views
高校倫理1433119 views
Help
Tools

English

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 の + 連結よりも複雑なスタイリングをコードで表現しやすくなります。