チュートリアルでビューとタップジェスチャーを試したので、新規Appから再確認をする。
【MyApp】
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
MyAppは初期状態のまま。
【ContentView】
import SwiftUI
struct ContentView: View {
private var nameIndex = 0
@State private var name = "bookmark.circle"
private var names: [String] =
["bookmark.circle","pencil.tip.crop.circle.fill"] // リソース
var tapGesture: some Gesture {
TapGesture()
.onEnded { value in
withAnimation {
nameIndex += 1
if nameIndex == names.count {
nameIndex = 0
}
name = names[nameIndex]
}
}
}
var body: some View {
VStack {
Text("画像をタップ")
Image(systemName: name)
.resizable()
.scaledToFit()
.imageScale(.large)
.foregroundColor(.blue)
.gesture(tapGesture)
}
}
}
var body: some View { } の中でビューデザインを行う。
android studioのlayoutのXMLの役割だろうか。
body内のビューを直接アクセスする方法は現在は知りません^^。
ジェスチャーに関しては変数で変更が可能のよう。
TapGesture() .onEnded { } 内の ”value in”は数値を利用しない場合は削除可能。
withAnimation { } は画像切り替えの時にフェードアウトフェードインっぽいエフェクト有り。
これを削除するといきなり画像の切り替えとなる。
ジェスチャーの細かい設定が無い分、楽なのかな?
次は、画像タップされたら標準ファイルアプリを開いて画像ファイルを開いてみよう^^。
スライドアニメーションで画像が切り替わったら面白いけど...。