はじめに
特定条件の場合のみ、ループアニメーションを付与します。
サンプルアプリ
やりかた
ContentView
import SwiftUI
struct ContentView: View {
@State var isAnimation: Bool = false
var body: some View {
VStack(spacing: 50) {
Toggle("", isOn: $isAnimation)
.labelsHidden()
Button {
print()
} label: {
Text("ボタン")
}
.buttonStyle(.borderedProminent)
.scaleEffect(isAnimation ? 1.5 : 1.0)
.animation(.default.repeat(while: isAnimation), value: isAnimation)
}
}
}
Animation+
import struct SwiftUI.Animation
extension Animation {
func `repeat`(while expression: Bool, autoreverses: Bool = true) -> Animation {
if expression {
return self.repeatForever(autoreverses: autoreverses)
} else {
return self
}
}
}
おわり
animation
のAPIが新しくなってからはじめに使いました笑