我无法解决这个问题。我有一个简单的动画,效果很好。但是,当我将视图包装到ScrollView中时(通过取消注释2行),它不再动画了吗?有人知道吗?
import SwiftUI
struct ContentView: View {
@State var offset = CGSize(width: 0, height: 0)
var body: some View {
// ScrollView {
VStack(spacing: 50) {
Rectangle()
.frame(width: 100, height: 100)
.offset(self.offset)
Button(action: {
withAnimation {
self.offset.width += 66
}
})
{
Text("Animate me")
}
}.frame(width: 300)
// }
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
答案 0 :(得分:1)
我已经注意到了这种行为。问题似乎是显式动画。如果您要使用隐式动画,那么它将起作用:
struct ContentView: View {
@State var offset = CGSize(width: 0, height: 0)
var body: some View {
ScrollView {
VStack(spacing: 50) {
Rectangle()
.frame(width: 100, height: 100)
.offset(self.offset)
.animation(.linear)
Button(action: {
self.offset.width += 66
})
{
Text("Animate me")
}
}.frame(width: 300)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我还没有找到原因,因此可以将其视为解决方法。可能是SwiftUI错误,或者是我仍然不明白的东西。