XCode 15.2 日本語化計画:New Human Interface Guideline
テキストの一部に関連する属性を持つ文字列の値の型。
属性付き文字列 (Attributed strings) は、個々の文字または文字範囲に属性を持つ文字列です。属性は、表示用の視覚用スタイル、ガイド付きアクセス用のアクセシビリティ、データソース間をリンクするためのハイパーリンクデータなどの特性を提供します。属性キーは、各属性の名前と値の型を提供します。Foundation や SwiftUI などのシステムフレームワークは共通キーを定義しており、カスタム拡張機能であなた独自のキーを定義できます。
属性は文字列全体に適用することも、文字列内の範囲に適用することもできます。文字列は、一回の実行として一貫した属性を持つ各範囲を表します。
AttributedString は、添え字と動的メンバー検索を使用して、あなたの呼び出しポイントからの属性の操作を簡素化します。最も詳細な形式では、以下のように AttributeContainer を作成し、それを既存の属性付き文字列にマージすることで属性を設定します。
属性付き文字列の subscript(_:) メソッドを使用すると、AttributeContainer の明示的な使用を省略し、その型によって属性を設定するだけで済みます。
"Swift プログラミング言語" の "属性" で説明されているように、AttributedString は動的メンバー検索をサポートしているため、代わりにドット構文を使用してその添え字にアクセスできます。属性キー型を返す foregroundColor などのプロパティと組み合わせると、この最終形式は文字列全体に適用する属性を設定する自然な方法を提供します。
この例が機能するのは、AppKit が AtrtributeScopes.AppKitAttributes という AttributeScope を定義し、foregroundColor プロパティは AttributeScopes.AppKitAttributes.ForegroundColorAttribute 型を返すためです。AppKit の属性スコープは AttributeDynamicLookup を実装しているため、ドット構文は同等の添字式に解決され、attributeString.foregroundColor で attributeString[AttributeScopes.AppKitAttributes.ForegroundColorAttribute.self] を置き換えることができます。
以下に示すように、属性を範囲に適用することで、属性を属性付き文字列の一部にのみ適用するように設定することもできます。
文字列の runs プロパティを反復処理することで、属性の一意の組み合わせを持つ文字列の部分にアクセスできます。
AttributedStringKey に準拠する型を作成し、それらを AttributeScope に集めることで、独自のカスタム属性を定義できます。カスタムキーは AttributeDynamicLookup も拡張する必要があるため、呼び出し元はドット構文を使用して属性にアクセスできます。
Markdown を含む標準の String または Data インスタンスを init(markdown:options:baseURL:) などのイニシャライザに渡すことで、属性付き文字列を作成できます。属性付き文字列は、文字列内のマークアップを解析することによって属性を作成します。
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(String, attributes: AttributeContainer)
文字列と属性コンテナから属性付き文字列を作成します。
init(Substring, attributes: AttributeContainer)
部分文字列と属性コンテナから属性付き文字列を作成します。
init<S>(S, attributes: AttributeContainer)
文字シーケンスと属性コンテナから属性付き文字列を作成します。
属性キーと値のコンテナ。
指定された文字列リテラルから、属性を持たない属性付き文字列を作成します。
typealias AttributedString.StringLiteralType
文字列リテラルイニシャライザが使用する型。
init(unicodeScalarLiteral: String)
与えられた値に初期化されたインスタンスを作成します。
typealias AttributedString.UnicodeScalarLiteralType
Unicode スカラーリテラルイニシャライザが使用する型。
init(extendedGraphemeClusterLiteral: String)
与えられた値に初期化されたインスタンスを作成します。
typealias AttributedString.ExtendedGraphemeClusterLiteralType
拡張書記素クラスターリテラルイニシャライザが使用する型。
アプリのバンドルからローカライズされた文字列を検索して、属性付き文字列を作成します。
キーパスが識別する属性スコープを含む、アプリのバンドルからローカライズされた文字列を検索して、属性付き文字列を作成します。
キーパスが識別する属性スコープを含む、アプリのバンドルからローカライズされた文字列を検索することにより、属性付き文字列を作成します。
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
別のプロセスからアクセスできる、ローカライズ可能な文字列への参照。
アプリのバンドルからローカライズされた文字列を検索し、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。
アプリのバンドルから属性スコープを含むローカライズされた文字列を検索することにより、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。
キーパスが識別する属性スコープを含む、ローカライズされた文字列をアプリのバンドルから検索することにより、必要に応じてデフォルト値を使用して、属性付き文字列を作成します。
Markdown 構文を使用して、テキストと属性を含む属性付き文字列を初期化します。
Markdown 構文を使用した属性付き文字列のインスタンス化
Markdown 構文文字列を使用して、標準またはカスタムの属性を持つ属性付き文字列を初期化します。
init<S>(NSAttributedString, including: S.Type)
属性スコープを含む、参照型から値型の属性付き文字列を作成します。
init<S>(NSAttributedString, including: KeyPath<AttributeScopes, S.Type>)
キーパスが識別する属性スコープを含む、参照型から値型の属性付き文字列を作成します。
参照型から値型属性付き文字列を作成します。
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
属性付き文字列内の属性のその場での変更を定義するプロトコル。
システムのフレームワークが定義する属性のコレクション。
属性とコンテナの動的メンバー検索をサポートする型。
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
基になる文字列へのビューとしての、属性付き文字列の属性付き実行。
属性付き文字列のセグメントに対する反復可能なビュー。各セグメントは、同一の属性の実行が開始または終了する場所を示します。
func insert(some AttributedStringProtocol, at: AttributedString.Index)
指定された文字列を属性付き文字列内の特定の指標に挿入します。
属性付き文字列内の文字またはコード単位の位置を表す型。
func removeSubrange(some RangeExpression<AttributedString.Index>)
属性付き文字列から文字の範囲を削除します。
属性付き文字列の範囲内の内容を置き換えます。
ソース属性付き文字列の 1 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。
ソース属性付き文字列の 1 つの属性 (キー パスが識別する) を変換するクロージャを呼び出して、属性付き文字列を返します。
ソース属性付き文字列の 2 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。
ソース属性付き文字列の、キー パスが識別する 2 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。
ソースの属性付き文字列の 3 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。
ソースの属性付き文字列の 3 つの属性 (キー パスが識別する) を変換するクロージャを呼び出して、属性付き文字列を返します。
ソース属性付き文字列の 4 つの属性を変換するクロージャを呼び出して、属性付き文字列を返します。
ソース属性付き文字列の、キー パスが識別する 4 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。
ソース属性付き文字列の 5 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。
ソース属性付き文字列の、キー パスが識別する 5 つの属性を変換するクロージャを呼び出すことによって作成された属性付き文字列を返します。
struct AttributedString.SingleAttributeTransformer
その範囲または値を変更するか、それ全体を置き換えることによって属性を変換する型。
subscript<K>(K.Type) -> K.Value?
属性付き文字列キーに対応する属性値を返します。
subscript<K>(dynamicMember: KeyPath<AttributeDynamicLookup, K>) -> K.Value?
キーパスが示す属性値を返します。
属性とコンテナの動的メンバー検索をサポートする型。
キーパスが示すスコープ付き属性コンテナを返します。
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 つの値が等しくないかどうかを示すブール値を返します。
ハッシュ値です。
この値の必須コンポーネントを与えられたハッシャーに入力してハッシュします。
与えられた復号器から復号して新しいインスタンスを作成します。
init(from: any Decoder, configuration: AttributeScopeCodableConfiguration)
提供された構成を利用して、指定された復号器から復号することにより、新しいインスタンスを作成します。
typealias AttributedString.DecodingConfiguration
属性付き文字列を復号するための構成型。
値を与えられたエンコーダにコード化します。
func encode(to: any Encoder, configuration: AttributeScopeCodableConfiguration)
提供された構成を利用して、値を指定されたエンコーダにコード化します。
typealias AttributedString.EncodingConfiguration
属性付き文字列をコード化するための構成型。
struct AttributeScopeCodableConfiguration
属性付き文字列をコード化および復号化するための構成型。
属性付き文字列キーのコード化と復号化
データをコード化または復号化するために属性キーによって採用されるプロトコル群。
インスタンスのテキスト表現。
typealias AttributedString.Representation
typealias AttributedString.Specification
typealias AttributedString.UnwrappedType
typealias AttributedString.ValueType
init(localized: LocalizedStringResource, options: AttributedString.LocalizationOptions)
static var defaultResolverSpecification: ResolverSpecification
static var transferRepresentation: TransferRepresentation
struct AttributedString.AttributeInvalidationCondition
struct AttributedString.LocalizationOptions
テキストのローカル化の構成オプション。
enum AttributedString.AttributeRunBoundaries
AttributedStringProtocol
DecodableWithConfiguration
EncodableWithConfiguration
Transferable
struct AttributedSubstring
属性付き文字列の一部。
属性付き文字列のサポート型
共通の機能を共有するために、属性付き文字列、属性付き部分文字列、およびヘルパー型が拡張または準拠する型。
class NSAttributedString
テキストの一部に関連した属性 (視覚的スタイル、ハイパーリンク、アクセシビリティデータなど) を含む文字列。
class NSMutableAttributedString
テキストの一部に関連した属性 (視覚的スタイル、ハイパーリンク、アクセシビリティデータなど) を含む変更可能な文字列。