Contents

draggable(_:preview:)

Activates this view as the source of a drag and drop operation.

Declaration

nonisolated func draggable<V, T>(_ payload: @autoclosure  @escaping () -> T, @ViewBuilder preview: () -> V) -> some View where V : View, T : Transferable

Parameters

  • payload:

    A closure that returns a single class instance or a value conforming to Transferable that represents the draggable data from this view.

  • preview:

    A View to use as the source for the dragging preview, once the drag operation has begun. The preview is centered over the source view.

Mentioned in

Return Value

A view that activates this view as the source of a drag and drop operation, beginning with user gesture input.

Discussion

Applying the draggable(_:preview:) modifier adds the appropriate gestures for drag and drop to this view. When a drag operation begins, a rendering of preview is generated and used as the preview image.

var title: String
var body: some View {
    Color.pink
        .frame(width: 400, height: 400)
        .draggable(title) {
             Text("Drop me")
         }
}

To customize the lift preview, shown while the system transitions to show your custom preview, apply a contentShape(_:_:eoFill:) with a dragPreview kind. For example, you can change the preview’s corner radius or use a nested view as the preview.

See Also

Moving transferable items