記事


ビュー修飾子メンテナンスの削減


定期的に再利用するビュー修飾子をカスタム ビュー修飾子にバンドルします。



概観


一貫性のあるビューを作成するには、同じビュー修飾子または修飾子のグループを複数のビューで繰り返し再利用することが考えられます。例えば、あなたのアプリ全体で多くのテキストインスタンスに同じフォントと前景色を適用すれば、すべてを統一することができます。しかし残念ながら、これはメンテナンス上の課題につながり、フォントサイズの変更といった様式の小さな変更でさえ、コードの様々な部分に変更を加える必要があるからです。


このオーバーヘッドを回避するには、ViewModifier プロトコルのインスタンスを使用して、一連の修飾子を 1 か所に集めます。次に、その修飾子を使用するメソッドで View プロトコルを拡張し、使いやすく理解しやすいものにします。修飾子をまとめて集めることで、変更したいときに更新できる場所が 1 か所に集まります。


カスタムビュー修飾子の作成


カスタム修飾子を作成する際は、コレクションの目的を反映した名前を付けてください。例えば、caption のフォントスタイルとセカンダリカラースキームをビューに繰り返し適用してセカンダリスタイルを表現する場合は、これらを CaptionTextFormat としてまとめて集めます。


struct CaptionTextFormat: ViewModifier {
    func body(content: Content) -> some View {
        content
            .font(.caption)
            .foregroundColor(.secondary)
    }
}

modifier(_:) メソッドを使用して修飾子を適用します。以下のコードは、上記の例を Text インスタンスに適用します。


Text("Some additional information...")
    .modifier(CaptionTextFormat())

ビュープロトコルを拡張して滑らかな修飾子アクセスを提供


カスタムビュー修飾子に便利にアクセスできるようにするには、修飾子を適用する関数を使用して View プロトコルを拡張します。


extension View {
    func captionTextFormat() -> some View {
        modifier(CaptionTextFormat())
    }
}

以下の拡張機能を追加して、テキストビューに修飾子を適用します。


Text("Some additional information...")
    .captionTextFormat()




以下も見よ


ビューの修飾


ビューの構成

ビュー修飾子を適用してビューの特性を調整します。


func modifier<T>(T) -> ModifiedContent<Self, T>

ビューに修飾子を適用し、新しいビューを返します。


protocol ViewModifier

ビューまたは別のビュー修飾子に適用して、元の値の異なるバージョンを生成する修飾子。


struct EmptyModifier

開発中のコンパイル時に修飾子を切り替えるために使用される、空の修飾子または ID 修飾子。


struct ModifiedContent

修飾子が適用された値。


protocol EnvironmentalModifier

使用する前に環境内の具体的な修飾子に解決しなければならない修飾子。


struct ManipulableModifier


struct ManipulableResponderModifier


struct ManipulableTransformBindingModifier


struct ManipulationGeometryModifier


struct ManipulationGestureModifier


struct ManipulationUsingGestureStateModifier


enum Manipulable

操作可能なさまざまな関連型の名前空間。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ