[英]SwiftUI | onDrag - customize (dragItem) preview image appearance
我一直想知道是否有任何方法可以自定义使用onDrag
时被拖动的view
的preview image
?
如您所见,默认情况下, preview image
是视图的稍大的不透明度图像。
根据我的发现,在拖动过程的一开始就生成了preview image
。 但我找不到改变它的方法。
我所说的自定义是指拥有一些自定义image
或自定义view
的preview image
。 (都没有默认的不透明度)
有没有人有想法?
我曾尝试使用previewImageHandler并且一般来说,阅读了很多关于NSItemProvider
。 但对我来说,这似乎对 SwiftUI 来说是不可能的?
使用UIKit
可以自定义UIDragItem
- 使用previewProvider
类似的东西: 这里
这是我的演示代码:
struct ContentView: View {
var body: some View {
DraggedView()
.onDrag({ NSItemProvider() })
}
private struct DraggedView: View {
var body: some View {
RoundedRectangle(cornerRadius: 20)
.frame(width: 120, height: 160)
.foregroundColor(.green)
}
}
}
我将使用它在LazyVGrid
进行拖放,因此遗憾的是无法选择自定义gestures
。
我的第二个想法是同时有一个手势,首先将要拖动的item
更改为其他内容,然后onDrag
启动并返回带有preview image
的NSItemProvider
,这将是我想要的图像。 但是我不能让这两个手势同时进行,你必须先关闭一个才能开始第二个。
谢谢!
iOS的15增加了一个API来做到这一点-你可以指定View
要用于preview
。 onDrag(_:预览:)
RoundedRectangle(cornerRadius: 20)
.frame(width: 120, height: 160)
.foregroundColor(.green)
.onDrag {
NSItemProvider()
} preview: {
RoundedRectangle(cornerRadius: 18)
.frame(width: 100, height: 140)
.foregroundColor(.green)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.