最終更新日: 2026-07-26
TOP(About this memo)) > 一覧(Swift) > SwiftUI
Image
Image("turtlerock").clipShape(Circle()).overlay { Circle().stroke(.gray, lineWidth: 4) }.shadow(radius: 7)
Text
VStack
HStack
Spacer
.frame(height: 300)
.padding(.bottom, -130)
.foregroundColor(.green)
.font(.subheadline)
Text("Hello").modifier(定義したモディファイア())struct ContentView: View {
let animals = ["カピバラ", "アルパカ", "トナカイ", "アルマジロ"]
var body: some View {
Form {
ForEach(0..<animals.count) { num in
Text(self.animals[num])
}
}
}
}
@inlinable public func foregroundColor(_ color: Color?) -> some View
var body: some View {
VStack {
Text("Turtle Rock").font(.title)
Text("Text").font(.subheadline)
}
}
これは、下記と同義。
var body: VStack<TupleView<(Text, Text)>> = VStack<TupleView<(Text, Text)>>(
content: { () -> TupleView<(Text, Text)> in
return ViewBuilder.buildBlock(
Text("Turtle Rock").font(.title),
Text("Text").font(.subheadline)
)
}
)
まず、SwiftUIのように次々とViewを継ぎ足していくたびに、VStack<TupleView<(Text, Text)>>のような型指定を変更するのは苦行になってくる。
それをsomeを使って省略する。
var body: some View {
VStack(
content: { () -> TupleView<(Text, Text)> in
return ViewBuilder.buildBlock(
Text("Turtle Rock").font(.title),
Text("Text").font(.subheadline)
)
}
)
}
まずは、省略記法(トレーリングクロージャ)を使う。
var body: some View {
VStack {
ViewBuilder.buildBlock(
Text("Turtle Rock").font(.title),
Text("Text").font(.subheadline)
)
}
}
そして、SwiftUIではresultBuilderというSwiftの機能が使われていて、contentで指定した内容を変換してくれるので、下記のように省略して指定することができる。
var body: some View {
VStack {
Text("Turtle Rock").font(.title)
Text("Text").font(.subheadline)
}
}