Mof*_*waw 10 ios swift swiftui
我一直在想,如果有任何的方式来定制preview image的view所有正使用时拖onDrag?
如您所见,preview image默认情况下,视图的不透明度图像稍大。
根据我的发现,preview image在拖动过程的一开始就生成了a 。但我找不到改变它的方法。
我所说的定制是指有一些定制image或preview image定制view。(都没有默认的不透明度)
有没有人有想法?
我曾尝试使用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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将使用它在 a 中进行拖放LazyVGrid,因此gestures遗憾的是自定义没有选择。
我的第二个想法是同时有一个手势,首先item将要拖动的内容更改为其他内容,然后onDrag开始并返回NSItemProvider与preview image我想要的内容。但是我不能让这两个手势同时进行,你必须先关闭一个才能开始第二个。
谢谢!
Jor*_*n H 16
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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |