4 拖放

原文链接: https://developer.apple.com/documentation/swiftui/drag-and-drop

4 拖放

让大家可以通过把项目从一个位置拖到另一个位置来移动或复制它们。

概述

拖放为大家提供了一种便捷方式,可以把内容从应用的一部分移动到另一部分、从一个应用移动到另一个应用,或者用直观的拖拽手势重新排列内容。为应用界面中可能的源视图和目标视图添加视图修饰符,即可在你的应用中支持这一功能。

在你的修饰符中,提供或接受遵循 Transferable 协议的类型,或者遵循 NSItemProviderReading 和/或 NSItemProviderWriting 的类型。在 Swift 中,优先使用可传输项目。

关于设计指导,请参阅 Human Interface Guidelines 中的 拖放。

基础

配置拖放行为

移动项目

移动可传输项目

使用项目提供者移动项目

  • itemProvider(_:) — 提供一个闭包,为某个特定数据元素给出拖拽表示。
  • onDrag(_:preview:) — 把该视图激活为拖放操作的源。
  • onDrag(_:) — 把该视图激活为拖放操作的源。
  • onDrop(of:isTargeted:perform:) — 定义一个拖放操作的目标,用你指定的闭包处理被放置的内容。
  • onDrop(of:delegate:) — 使用你提供的代理所控制的行为,定义一个拖放操作的目标。
  • DropDelegate — 一种接口,你实现它来与一个被修改为接受放置的视图中的放置操作交互。
  • DropProposal — 一次放置的行为。
  • DropOperation — 一些操作类型,决定用户放下被拖拽项目时拖放会话如何结束。
  • DropInfo — 一次放置的当前状态。

重新排序项目

描述预览的排布方式

配置弹性加载