attributedTextFormattingDefinition(_:)
Apply a text formatting definition to nested views.
Declaration
nonisolated func attributedTextFormattingDefinition<D>(_ definition: D) -> some View where D : AttributedTextFormattingDefinition
Discussion
Applying a text formatting definition to a Text or TextEditor created using the init(_:) or init(text:selection:) initializer, respectively, makes sure that any content observable to the user adheres to the constraints of the formatting definition.
You can compose your own definition from an attribute scope and a series of AttributedTextValueConstraints:
// MyTextFormattingDefinition.swift
struct MyTextFormattingDefinition: AttributedTextFormattingDefinition {
var body: some AttributedTextFormattingDefinition<
AttributeScopes.SwiftUIAttributes
> {
ValueConstraint(
for: \.underlineStyle,
values: [nil, .single],
default: .single)
MyAttributedTextValueConstraint()
}
}
// MyEditorView.swift
TextEditor(text: $text)
.attributedTextFormattingDefinition(MyTextFormattingDefinition())To manually enforce constraints, e.g. before serializing text contents, use the constrain(_:) method.