gpt4 book ai didi

swift - 在 SwiftUI View 上为 DragGesture 的 predictedEndTranslation 设置动画

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:04 24 4
gpt4 key购买 nike

我想在 DragGesture 的预测位置放置一个 View ,这就是我在 .gestureEnded 闭包中所做的,将更改包装在 withAnimation 中 block 。然而,当我在实时 View 中尝试时,变化不是动画的。

这是框架的错误还是我做错了什么?

struct ContentView: View {

@State var ty: CGFloat = 0

var dragGesture: some Gesture {
DragGesture()
.onChanged { theGesture in
self.ty = theGesture.translation.height
print("Changed")
}
.onEnded { theGesture in
print("Ended")
withAnimation(Animation.easeOut(duration: 3)) {
self.ty = theGesture.predictedEndTranslation.height
}
}
}

var body: some View {
VStack {
ForEach(1 ..< 5) { _ in

Color.red
.frame(minHeight: 20, maxHeight: 100)
.padding(0)

}
}
.transformEffect(.init(translationX: 0, y: ty))
.gesture(dragGesture)
}

}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

最佳答案

translateEffect 似乎无法设置动画。这是有道理的,因为 CGAffineTransform 不符合 Animatable,所以这可能符合预期。幸运的是,您仍然可以使用 .offset(x: 0, y: ty)

这对你有用吗?

请注意,某些动画(例如这个动画)在 Xcode 实时预览中不起作用。您需要在设备或模拟器上运行它。

关于swift - 在 SwiftUI View 上为 DragGesture 的 predictedEndTranslation 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57020557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com