gpt4 book ai didi

ios - 快速用户界面 | onDrag - 自定义(dragItem)预览图像外观

转载 作者:行者123 更新时间:2023-12-05 07:02:35 24 4
gpt4 key购买 nike

我一直想知道是否有任何方法可以自定义使用 onDrag 时被拖动的 viewpreview image

如您所见,默认情况下,预览图像 是略大的不透明度图像。

根据我的发现,preview image 是在拖动过程的最开始生成的。但是我找不到改变它的方法。

我所说的自定义是指拥有一些自定义图像 或自定义 View 预览图像。 (两者都没有默认的不透明度)

有没有人有想法?

我试过使用previewImageHandler通常,阅读很多关于 NSItemProvider 的内容。但对我来说,这似乎是 SwiftUI 做不到的事情?

使用 UIKit 可以自定义 UIDragItem - 类似于使用 previewProvider 的东西:Here

这是我的演示代码:

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 并返回 NSItemProviderpreview image 这将是我想要的那个。但我不能同时使用这两个手势,您必须先取消一个才能开始第二个。

谢谢!

最佳答案

iOS 15 添加了一个 API 来执行此操作 - 您可以指定 View 以用于 previewonDrag(_:preview:)

RoundedRectangle(cornerRadius: 20)
.frame(width: 120, height: 160)
.foregroundColor(.green)
.onDrag {
NSItemProvider()
} preview: {
RoundedRectangle(cornerRadius: 18)
.frame(width: 100, height: 140)
.foregroundColor(.green)
}

关于ios - 快速用户界面 | onDrag - 自定义(dragItem)预览图像外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63533052/

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