SwiftUIをやり始めた初心者です。
円形のわっかを順々に時間差で表示してできたら弾けるように外側に移動させたい(意味わかんないw)のですが参考になりそうなサイトが見つからず困っています。
始めたばかりなので具体的なコードと一緒に教えてくださると嬉しいです。もちろんやり方だけでも構いません。丸投げの質問と低評価をいただいたのですが、正直何からやればいいのか全くわからない状態です。参考にできそうなことなどを教えていただけると嬉しいです。
上から右回りに順番に表示して

回答1件
0
ベストアンサー
こんな感じでしょうか?
なんとなくで作ってみました。
SwiftUI
1struct ContentView: View { 2 @State private var viewState1 = false 3 @State private var viewState2 = true 4 5 var body: some View { 6 ZStack { 7 Circle() 8 .stroke(Color.blue) 9 .frame(width: 50, height: 50) 10 .offset(x: 0, y: self.viewState1 ? -100 : 0) 11 .opacity(self.viewState2 ? 0 : 1) 12 .animation(Animation.spring().delay(0.2)) 13 Circle() 14 .stroke(Color.blue) 15 .frame(width: 50, height: 50) 16 .offset(x: self.viewState1 ? 70 : 0, y: self.viewState1 ? -70 : 0) 17 .opacity(self.viewState2 ? 0 : 1) 18 .animation(Animation.spring().delay(0.4)) 19 20 Circle() 21 .stroke(Color.blue) 22 .frame(width: 50, height: 50) 23 .offset(x: self.viewState1 ? 100 : 0, y: 0) 24 .opacity(self.viewState2 ? 0 : 1) 25 .animation(Animation.spring().delay(0.6)) 26 27 Circle() 28 .stroke(Color.blue) 29 .frame(width: 50, height: 50) 30 .offset(x: self.viewState1 ? 70 : 0, y: self.viewState1 ? 70 : 0) 31 .opacity(self.viewState2 ? 0 : 1) 32 .animation(Animation.spring().delay(0.8)) 33 34 Circle() 35 .stroke(Color.blue) 36 .frame(width: 50, height: 50) 37 .offset(x: 0, y: self.viewState1 ? 100 : 0) 38 .opacity(self.viewState2 ? 0 : 1) 39 .animation(Animation.spring().delay(1.2)) 40 41 Circle() 42 .stroke(Color.blue) 43 .frame(width: 50, height: 50) 44 .offset(x: self.viewState1 ? -70 : 0, y: self.viewState1 ? 70 : 0) 45 .opacity(self.viewState2 ? 0 : 1) 46 .animation(Animation.spring().delay(1.4)) 47 48 Circle() 49 .stroke(Color.blue) 50 .frame(width: 50, height: 50) 51 .offset(x: self.viewState1 ? -100 : 0, y: 0) 52 .opacity(self.viewState2 ? 0 : 1) 53 .animation(Animation.spring().delay(1.6)) 54 55 Circle() 56 .stroke(Color.blue) 57 .frame(width: 50, height: 50) 58 .offset(x: self.viewState1 ? -70 : 0, y: self.viewState1 ? -70 : 0) 59 .opacity(self.viewState2 ? 0 : 1) 60 .animation(Animation.spring().delay(1.8)) 61 62 } 63 .onAppear { 64 withAnimation { 65 self.viewState1 = true 66 self.viewState2 = false 67 } 68 } 69 } 70} 71
SwiftUI
1 2.animation(Animation.spring().delay(0.2)) 3//この部分で時間差を表現しています。
投稿2020/04/18 19:25
総合スコア60
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
ありがとうございます!!!
動かしてみてびっくりしました。これを参考にいろいろいじってみます。
ほんとにすごい✨✨
↓自分なりに調整しました。
import SwiftUI
struct ContentView: View {
@State private var viewState1 = false
@State private var viewState2 = true
var body: some View {
ZStack {
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: 0, y: self.viewState1 ? -100 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(0.4))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? 70 : 0, y: self.viewState1 ? -70 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(0.6))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? 100 : 0, y: 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(0.8))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? 70 : 0, y: self.viewState1 ? 70 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(1))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: 0, y: self.viewState1 ? 100 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(1.2))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? -70 : 0, y: self.viewState1 ? 70 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(1.4))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? -100 : 0, y: 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(1.6))
Circle()
.stroke(Color.blue, lineWidth: 3)
.offset(x: self.viewState1 ? -70 : 0, y: self.viewState1 ? -70 : 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(1.8))
}
.frame(width: 100,height: 220)
.onAppear {
withAnimation {
self.viewState1 = true
self.viewState2 = false
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
↓こんな感じで段階ごとに動かしたいんですけどいい方法はないですか?
if (a == 1){
Circle()
.stroke(Color.blue, lineWidth: 3)
.position(x: 0, y: 0)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(0.2))
}
if (a == 2){
Circle()
.stroke(Color.blue, lineWidth: 3)
.position(x: 0, y: -100)
.opacity(self.viewState2 ? 0 : 1)
.animation(Animation.spring().delay(0.8))
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
.onAppear {
withAnimation {
//self.viewState1 = true
self.viewState2 = false
self.a = 1
self.a += 1
}
}

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。