構造体


AttributedString


テキストの一部に関連する属性を持つ文字列の値の型。


iOS 15.0+ iPadOS 15.0+ macOS 12.0+ Mac Catalyst 15.0+

tvOS 15.0+ watchOS 8.0+ visionOS 1.0+ Xcode 13.0+

@dynamicMemberLookup
struct
AttributedString





概観


属性付き文字列 (Attributed strings) は、個々の文字または文字範囲に属性を持つ文字列です。属性は、表示用の視覚用スタイル、ガイド付きアクセス用のアクセシビリティ、データソース間をリンクするためのハイパーリンクデータなどの特性を提供します。属性キーは、各属性の名前と値の型を提供します。Foundation や SwiftUI などのシステムフレームワークは共通キーを定義しており、カスタム拡張機能であなた独自のキーを定義できます。



文字列の属性


属性は文字列全体に適用することも、文字列内の範囲に適用することもできます。文字列は、一回の実行として一貫した属性を持つ各範囲を表します。


AttributedString は、添え字と動的メンバー検索を使用して、あなたの呼び出しポイントからの属性の操作を簡素化します。最も詳細な形式では、以下のように AttributeContainer を作成し、それを既存の属性付き文字列にマージすることで属性を設定します。


  1. var attributedString = AttributedString("This is a string with empty attributes.")
  2. var container = AttributeContainer()
  3. container[AttributeScopes.AppKitAttributes.ForegroundColorAttribute.self] = .red
  4. attributedString.mergeAttributes(container, mergePolicy: .keepNew)


属性付き文字列の subscript(_:) メソッドを使用すると、AttributeContainer の明示的な使用を省略し、その型によって属性を設定するだけで済みます。


  1. attributedString[AttributeScopes.AppKitAttributes.ForegroundColorAttribute.self] = .yellow


"Swift プログラミング言語""属性" で説明されているように、AttributedString は動的メンバー検索をサポートしているため、代わりにドット構文を使用してその添え字にアクセスできます。属性キー型を返す foregroundColor などのプロパティと組み合わせると、この最終形式は文字列全体に適用する属性を設定する自然な方法を提供します。


  1. attributedString.foregroundColor = .green


この例が機能するのは、AppKitAtrtributeScopes.AppKitAttributes という AttributeScope を定義し、foregroundColor プロパティは AttributeScopes.AppKitAttributes.ForegroundColorAttribute 型を返すためです。AppKit の属性スコープは AttributeDynamicLookup を実装しているため、ドット構文は同等の添字式に解決され、attributeString.foregroundColorattributeString[AttributeScopes.AppKitAttributes.ForegroundColorAttribute.self] を置き換えることができます。


以下に示すように、属性を範囲に適用することで、属性を属性付き文字列の一部にのみ適用するように設定することもできます。


  1. var attributedString = AttributedString("The first month of your subscription is free.")
  2. let range = attributedString.range(of: "free")!
  3. attributedString[range].foregroundColor = .green


文字列の runs プロパティを反復処理することで、属性の一意の組み合わせを持つ文字列の部分にアクセスできます。


AttributedStringKey に準拠する型を作成し、それらを AttributeScope に集めることで、独自のカスタム属性を定義できます。カスタムキーは AttributeDynamicLookup も拡張する必要があるため、呼び出し元はドット構文を使用して属性にアクセスできます。



Markdown を使用して属性付き文字列を作成


Markdown を含む標準の String または Data インスタンスを init(markdown:options:baseURL:) などのイニシャライザに渡すことで、属性付き文字列を作成できます。属性付き文字列は、文字列内のマークアップを解析することによって属性を作成します。


  1. do {
  2. let thankYouString = try AttributedString(
  3. markdown:"**Thank you!** Please visit our [website](https://example.com)")
  4. } catch {
  5. print("Couldn't parse: \(error)")
  6. }


init(localized:options:table:bundle:locale:comment:) のようなイニシャライザで文字列ファイルからロードするローカライズされた文字列には、スタイルを追加するための Markdown を含めることもできます。さらに、これらのローカライズされた属性付き文字列のイニシャライザは、replacementIndex 属性を適用できます。これにより、言語によって順序が異なる置換文字列の範囲を決定できます。


MarkdownDecodableAttributedStringKey に準拠する新しい属性を宣言することで、Apple の Markdown 拡張構文 ^[text](name:value, name:value, …) を使用して呼び出す属性を追加できます。カスタム属性を作成し、それを Markdown で使用する例については、サンプルコードプロジェクトの ローカライズされた食品注文アプリの構築 (Building a Localized Food-Ordering App) を参照してください。


ローカライズされた属性付き文字列では、拡張構文を使用して、システムが自動文法一致を適用できる文字列の部分を示すこともできます。自動文法一致で使用されるこの拡張構文の例については、localized: パラメータを取るイニシャライザを参照してください。



属性の範囲


AttributedString API は、テキストのスタイル設定、日付や数値などの書式設定型の意味論的なマークアップ、ハイパーリンクなどの一般的な使用のためのキーを定義します。これらは、AppKit、Foundation、SwiftUI、UIKit の属性を含む AttributeScopes 列挙体で見つかります。


AttributedStringKey を実装することで独自の属性を定義し、AttributeScope でそれらを集めることで名前で参照できます。






トピックス


属性付き文字列の作成


init()

空の属性付き文字列を作成します。


init(AttributedSubstring)

属性付き部分文字列から属性付き文字列を作成します。


init(String, attributes: AttributeContainer)

文字列と属性コンテナから属性付き文字列を作成します。


init(Substring, attributes: AttributeContainer)

部分文字列と属性コンテナから属性付き文字列を作成します。


init<S>(S, attributes: AttributeContainer)

文字シーケンスと属性コンテナから属性付き文字列を作成します。


struct AttributeContainer

属性キーと値のコンテナ。



リテラル値から属性付き文字列を作成


init(stringLiteral: String)

指定された文字列リテラルから、属性を持たない属性付き文字列を作成します。


typealias AttributedString.StringLiteralType

文字列リテラルイニシャライザが使用する型。


init(unicodeScalarLiteral: String)

与えられた値に初期化されたインスタンスを作成します。


typealias AttributedString.UnicodeScalarLiteralType

Unicode スカラーリテラルイニシャライザが使用する型。


init(extendedGraphemeClusterLiteral: String)

与えられた値に初期化されたインスタンスを作成します。


typealias AttributedString.ExtendedGraphemeClusterLiteralType

拡張書記素クラスターリテラルイニシャライザが使用する型。



ローカライズされた属性付き文字列の作成


init(localized: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?)

アプリのバンドルからローカライズされた文字列を検索して、属性付き文字列を作成します。


init<S>(localized: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: S.Type)

キーパスが識別する属性スコープを含む、アプリのバンドルからローカライズされた文字列を検索して、属性付き文字列を作成します。


init<S>(localized: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: KeyPath<AttributeScopes, S.Type>)

キーパスが識別する属性スコープを含む、アプリのバンドルからローカライズされた文字列を検索することにより、属性付き文字列を作成します。


struct String.LocalizationValue


struct AttributedString.FormattingOptions

属性の処理に影響するオプション。


init(localized: LocalizedStringResource)

ローカライズされた文字列リソースから、ローカライズされた属性付き文字列を作成します。


init<S>(localized: LocalizedStringResource, including: S.Type)

ローカライズされた文字列リソースから、属性スコープを含むローカライズされた属性付き文字列を作成します。


init<S>(localized: LocalizedStringResource, including: KeyPath<AttributeScopes, S.Type>)

ローカライズされた文字列リソースから、キーパスが識別する属性スコープを含む、ローカライズされた属性付き文字列を作成します。


struct LocalizedStringResource

別のプロセスからアクセスできる、ローカライズ可能な文字列への参照。



ローカライズされた属性文字列をデフォルト値で作成


init(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?)

アプリのバンドルからローカライズされた文字列を検索し、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。


init<S>(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: S.Type)

アプリのバンドルから属性スコープを含むローカライズされた文字列を検索することにより、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。


init<S>(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.FormattingOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: KeyPath<AttributeScopes, S.Type>)

キーパスが識別する属性スコープを含む、ローカライズされた文字列をアプリのバンドルから検索することにより、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。



属性付き文字列を Markdown から作成


Markdown 構文を使用して、テキストと属性を含む属性付き文字列を初期化します。


Markdown 構文を使用した属性付き文字列のインスタンス化


Markdown 構文文字列を使用して、標準またはカスタムの属性を持つ属性付き文字列を初期化します。



参照型から属性付き文字列を作成


init<S>(NSAttributedString, including: S.Type)

属性スコープを含む、参照型から値型の属性付き文字列を作成します。


init<S>(NSAttributedString, including: KeyPath<AttributeScopes, S.Type>)

キーパスが識別する属性スコープを含む、参照型から値型の属性付き文字列を作成します。


init(NSAttributedString)

参照型から値型属性付き文字列を作成します。



重複した属性付き文字列の作成


init<S, T>(T, including: S.Type)

属性スコープを含む、別の属性付き文字列から属性付き文字列を作成します。


init<S, T>(T, including: KeyPath<AttributeScopes, S.Type>)

キーパスが識別する属性スコープを含む、別の属性付き文字列から属性付き文字列を作成します。



属性の適用と変更


func setAttributes(AttributeContainer)

属性付き文字列の属性を、指定された属性コンテナ内の属性に設定します。


func settingAttributes(AttributeContainer) -> AttributedString

属性付き文字列の属性を指定された属性コンテナ内の属性に設定することにより、属性付き文字列を返します。


func mergeAttributes(AttributeContainer, mergePolicy: AttributedString.AttributeMergePolicy)

属性付き文字列の属性を、指定された属性コンテナ内の属性と合体します。


func mergingAttributes(AttributeContainer, mergePolicy: AttributeMergePolicy) -> AttributedString

属性付き文字列の属性を指定された属性コンテナ内の属性と合体することにより、属性付き文字列を返します。


enum AttributedString.AttributeMergePolicy

属性を合体するときに適用する動作の列挙型。


func replaceAttributes(AttributeContainer, with: AttributeContainer)

1 つの属性コンテナ内の属性の出現を、別の属性コンテナ内の属性で置き換えます。


func replacingAttributes(AttributeContainer, with: AttributeContainer) -> AttributedString

1 つの属性コンテナ内の属性の出現を別の属性コンテナ内の属性で置き換えることにより、属性付き文字列を返します。


protocol AttributedStringAttributeMutation

属性付き文字列内の属性のその場での変更を定義するプロトコル。



定義された属性の使用


enum AttributeScopes

システムのフレームワークが定義する属性のコレクション。


enum AttributeDynamicLookup

属性とコンテナの動的メンバー検索をサポートする型。


struct ScopedAttributeContainer

指定された属性範囲内でそのコンテンツの動的なメンバー検索を可能にする属性コンテナ。



部分文字列の検索


func range<T>(of: T, options: String.CompareOptions, locale: Locale?) -> Range<Index>?

属性付き文字列内の部分文字列が存在する場合は、その範囲を返します。



範囲へのアクセス


subscript(some RangeExpression<AttributedString.Index>) -> AttributedSubstring

部分文字列の境界を示す範囲を使用して、属性付き文字列の部分文字列を返します。



指標へのアクセス


属性付き文字列内の指標へのアクセス

属性付き文字列内の位置、先頭からのオフセット、または別の既知の位置の前後にアクセスします。



属性付き文字列の中へのビューのアクセス


var characters: AttributedString.CharacterView

基になる文字列の中のビューとしての、属性付き文字列の文字。


struct AttributedString.CharacterView

Unicode 文字としての、属性付き文字列の基礎となる保管記憶の中へのビュー。


var unicodeScalars: AttributedString.UnicodeScalarView

基になる文字列へのビューとしての、属性付き文字列の Unicode スカラー。


struct AttributedString.UnicodeScalarView

Unicode スカラーとしての、属性付き文字列の基礎となる保管記憶のビュー。


var runs: AttributedString.Runs

基になる文字列へのビューとしての、属性付き文字列の属性付き実行。


struct AttributedString.Runs

属性付き文字列のセグメントに対する反復可能なビュー。各セグメントは、同一の属性の実行が開始または終了する場所を示します。



属性付き文字列の変更


func insert(some AttributedStringProtocol, at: AttributedString.Index)

指定された文字列を属性付き文字列内の特定の指標に挿入します。


struct AttributedString.Index

属性付き文字列内の文字またはコード単位の位置を表す型。


func removeSubrange(some RangeExpression<AttributedString.Index>)

属性付き文字列から文字の範囲を削除します。


func replaceSubrange(some RangeExpression<AttributedString.Index>, with: some AttributedStringProtocol)

属性付き文字列の範囲内の内容を置き換えます。



属性の変換


func transformingAttributes<K>(K.Type, (inout AttributedString.SingleAttributeTransformer<K>) -> Void) -> AttributedString

ソース属性付き文字列の 1 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K>(KeyPath<AttributeDynamicLookup, K>, (inout AttributedString.SingleAttributeTransformer<K>) -> Void) -> AttributedString

ソース属性付き文字列の 1 つの属性 (キー パスが識別する) を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K1, K2>(K1.Type, K2.Type, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>) -> Void) -> AttributedString

ソース属性付き文字列の 2 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K1, K2>(KeyPath<AttributeDynamicLookup, K1>, KeyPath<AttributeDynamicLookup, K2>, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>) -> Void) -> AttributedString

ソース属性付き文字列の、キー パスが識別する 2 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。


func transformingAttributes<K1, K2, K3>(K1.Type, K2.Type, K3.Type, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>) -> Void) -> AttributedString

ソースの属性付き文字列の 3 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K1, K2, K3>(KeyPath<AttributeDynamicLookup, K1>, KeyPath<AttributeDynamicLookup, K2>, KeyPath<AttributeDynamicLookup, K3>, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>) -> Void) -> AttributedString

ソースの属性付き文字列の 3 つの属性 (キー パスが識別する) を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K1, K2, K3, K4>(K1.Type, K2.Type, K3.Type, K4.Type, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>, inout AttributedString.SingleAttributeTransformer<K4>) -> Void) -> AttributedString

ソース属性付き文字列の 4 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。


func transformingAttributes<K1, K2, K3, K4>(KeyPath<AttributeDynamicLookup, K1>, KeyPath<AttributeDynamicLookup, K2>, KeyPath<AttributeDynamicLookup, K3>, KeyPath<AttributeDynamicLookup, K4>, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>, inout AttributedString.SingleAttributeTransformer<K4>) -> Void) -> AttributedString

ソース属性付き文字列の、キー パスが識別する 4 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。


func transformingAttributes<K1, K2, K3, K4, K5>(K1.Type, K2.Type, K3.Type, K4.Type, K5.Type, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>, inout AttributedString.SingleAttributeTransformer<K4>, inout AttributedString.SingleAttributeTransformer<K5>) -> Void) -> AttributedString

ソース属性付き文字列の 5 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。


func transformingAttributes<K1, K2, K3, K4, K5>(KeyPath<AttributeDynamicLookup, K1>, KeyPath<AttributeDynamicLookup, K2>, KeyPath<AttributeDynamicLookup, K3>, KeyPath<AttributeDynamicLookup, K4>, KeyPath<AttributeDynamicLookup, K5>, (inout AttributedString.SingleAttributeTransformer<K1>, inout AttributedString.SingleAttributeTransformer<K2>, inout AttributedString.SingleAttributeTransformer<K3>, inout AttributedString.SingleAttributeTransformer<K4>, inout AttributedString.SingleAttributeTransformer<K5>) -> Void) -> AttributedString

ソース属性付き文字列の、キー パスが識別する 5 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。


struct AttributedString.SingleAttributeTransformer

その範囲または値を変更するか、それ全体を置き換えることによって属性を変換する型。



文字列全体の属性へのアクセス


subscript<K>(K.Type) -> K.Value?

属性付き文字列キーに対応する属性値を返します。


subscript<K>(dynamicMember: KeyPath<AttributeDynamicLookup, K>) -> K.Value?

キーパスが示す属性値を返します。


enum AttributeDynamicLookup

属性とコンテナの動的メンバー検索をサポートする型。


subscript<S>(dynamicMember: KeyPath<AttributeScopes, S.Type>) -> ScopedAttributeContainer<S>

キーパスが示すスコープ付き属性コンテナを返します。


struct ScopedAttributeContainer

指定された属性スコープ内でそのコンテンツの動的なメンバー検索を可能にする属性コンテナ。



属性付き文字列の結合


func append(some AttributedStringProtocol)

属性付き文字列に文字列を追加します。


static func + (AttributedString, AttributedString) -> AttributedString

2 つの属性付き文字列を連結します。


static func + (AttributedString, some AttributedStringProtocol) -> AttributedString

2 つの属性付き文字列または部分文字列を連結します。


static func += (inout AttributedString, AttributedString)

属性付き文字列を別の属性付き文字列に追加します。


static func += (inout AttributedString, some AttributedStringProtocol)

属性付き文字列または部分文字列を別の属性付き文字列に追加します。



自動文法一致の実行


func inflected() -> AttributedString

自動文法一致語形変化ルールを属性付き文字列に適用し、結果を返します。



文字列補間の実行


struct AttributedString.InterpolationOptions

属性付き文字列に対する文字列補間の動作に影響を与えるオプション。



属性付き文字列の比較


static func == (AttributedString, AttributedString) -> Bool

2 つの属性付き文字列が等しいかどうかを示すブール値を返します。


static func == <RHS>(AttributedString, RHS) -> Bool

属性付き文字列と別の属性付き文字列または部分文字列が等しいかどうかを示すブール値を返します。


static func != (AttributedString, AttributedString) -> Bool

2 つの値が等しくないかどうかを示すブール値を返します。



ハッシュ化


var hashValue: Int

ハッシュ値です。


func hash(into: inout Hasher)

この値の必須コンポーネントを与えられたハッシャーに入力してハッシュします。



コード化と復号化


init(from: any Decoder)

与えられた復号器から復号して新しいインスタンスを作成します。


init(from: any Decoder, configuration: AttributeScopeCodableConfiguration)

提供された構成を利用して、指定された復号器から復号することにより、新しいインスタンスを作成します。


typealias AttributedString.DecodingConfiguration

属性付き文字列を復号するための構成型。


func encode(to: any Encoder)

値を与えられたエンコーダにコード化します。


func encode(to: any Encoder, configuration: AttributeScopeCodableConfiguration)

提供された構成を利用して、値を指定されたエンコーダにコード化します。


typealias AttributedString.EncodingConfiguration

属性付き文字列をコード化するための構成型。


struct AttributeScopeCodableConfiguration

属性付き文字列をコード化および復号化するための構成型。


属性付き文字列キーのコード化と復号化

データをコード化または復号化するために属性キーによって採用されるプロトコル群。



属性付き文字列の記述


var description: String

インスタンスのテキスト表現。



型エイリアス


typealias AttributedString.Representation


typealias AttributedString.Specification


typealias AttributedString.UnwrappedType


typealias AttributedString.ValueType



イニシャライザ


init(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?)


init<S>(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: KeyPath<AttributeScopes, S.Type>)


init<S>(localized: StaticString, defaultValue: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: S.Type)


init(localized: LocalizedStringResource, options: AttributedString.LocalizationOptions)


init<S>(localized: LocalizedStringResource, options: AttributedString.LocalizationOptions, including: KeyPath<AttributeScopes, S.Type>)


init<S>(localized: LocalizedStringResource, options: AttributedString.LocalizationOptions, including: S.Type)


init(localized: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?)


init<S>(localized: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: KeyPath<AttributeScopes, S.Type>)


init<S>(localized: String.LocalizationValue, options: AttributedString.LocalizationOptions, table: String?, bundle: Bundle?, locale: Locale?, comment: StaticString?, including: S.Type)



型プロパティ


static var defaultResolverSpecification: ResolverSpecification


static var transferRepresentation: TransferRepresentation



構造体


struct AttributedString.AttributeInvalidationCondition


struct AttributedString.LocalizationOptions

テキストのローカル化の構成オプション。



列挙型


enum AttributedString.AttributeRunBoundaries






関連


以下に準拠


AttributedStringProtocol


Decodable


DecodableWithConfiguration


Encodable


EncodableWithConfiguration


ExpressibleByStringLiteral


Sendable


Transferable






以下も見よ


メタデータを含む文字列


struct AttributedSubstring

属性付き文字列の一部。


属性付き文字列のサポート型

共通の機能を共有するために、属性付き文字列、属性付き部分文字列、およびヘルパー型が拡張または準拠する型。


class NSAttributedString

テキストの一部に関連した属性 (視覚的スタイル、ハイパーリンク、アクセシビリティデータなど) を含む文字列。


class NSMutableAttributedString

テキストの一部に関連した属性 (視覚的スタイル、ハイパーリンク、アクセシビリティデータなど) を含む変更可能な文字列。















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ