如何解决SwiftUI在移动/动画视图/形状上拖放
我正在尝试在SwiftUI中实现拖放功能。看来当视图没有动画效果时,以下代码可以正常工作。但是,当我使用偏移量移动视图时,拖动位置和视图会出现一些问题,例如视图位置与触摸位置不同,视图形状与原始位置不同。
无偏移动画(动画= false)的拖动效果很好:
拖动偏移动画(动画= true):
代码段:
import SwiftUI
struct ContentView: View {
@Observedobject var dropDelegate = CircleDropDelegate()
@State var animate = false
var body: some View {
vstack(alignment: .leading) {
Spacer()
Circle()
.fill(Color.green)
.offset(x: animate ? 100 : 0)
.animation(Animation.linear(duration: 5).repeatForever(autoreverses: true))
.frame(width: 50,height: 50)
.onDrag({
return NSItemProvider(object: "circle" as Nsstring)
})
Spacer()
Rectangle()
.fill(Color.green)
.frame(height: 150)
.onDrop(of: ["public.text"],delegate: dropDelegate)
Spacer()
}
.onAppear {
animate = true
}
.padding()
.background(Color.init(white: 0.7))
}
}
class CircleDropDelegate: ObservableObject,DropDelegate {
@Published var isEntered: Bool = false
func performDrop(info: DropInfo) -> Bool {
print("perform drop on Box \(info)")
return true
}
func dropEntered(info: DropInfo) {
print("circle entered the Box")
isEntered = true
}
func dropExited(info: DropInfo) {
print("circle exited the Box")
isEntered = false
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
是否可以解决此问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。