コンテナで括られた複数のViewに対して、Modifierをまとめて適用する方法を紹介します。
環境
この記事の情報は次のバージョンで動作確認しています。
【Xcode】11.1
【Swift】5.1
【iOS】13.1.3
【macOS】Catalina バージョン 10.15
【Swift】5.1
【iOS】13.1.3
【macOS】Catalina バージョン 10.15
コンテナでまとめて適用する
いくつかの特定のModifierは、VStackやHStackなどのコンテナに対して指定する事で、コンテナ内の各Viewにまとめて適用する事が可能です。
次のサンプルでは、VStackコンテナ内の各Viewに、フォントと表示色をまとめて適用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import SwiftUI struct ContentView: View { var body: some View { VStack { Text("カピバラ") Text("タピオカ") .font(.largeTitle) .foregroundColor(.red) Text("トナカイ") Text("アルパカ") } .font(.title) .foregroundColor(.blue) } } |
解説
全てのModifierがコンテナに対して適用できるわけではないので、実際に適用可能か自分で試してみる必要があります。
例えば現時点では、fontWeight()やbold()等はコンテナに対しては適用できません。
また、サンプルではText(“タピオカ”)に対して個別に指定したフォントや文字色が優先して適用されていますが、これもModifierの種類によっては動きが変わります。
ぼかし効果を付加するblur()などは、効果が重ねて適用されます。
あわせて読みたい記事
【SwiftUI】Modifierの適用順
Viewに様々な変更を適用するModifierですが、適用する順番によって挙動が変わる事があります。 これはModifierが既存のViewのプロパティを変更しているのでは無く、変更を適用した新しいViewを毎回作成している事に関係します。
【SwiftUI】カスタムModifierの作成
(2020/05/4 更新) SwiftUIでは、定形のModifierをまとめたカスタムModifierを作成できます。これは、繰り返し処理を避け、ソースの簡素化をはかるのに有効です。 本記事では、カスタムModifierの定義方法と使用...