使用拖放API构建类似Trello的iOS应用

拖放是用户交互,当我们要构建一个用户可以在屏幕上移动数据的应用程序时,它很自然地起作用。 Trello,Jira等应用程序正在大量使用它在板之间移动数据。

在iOS 11 SDK发行之前通过拖放交互构建iOS应用程序并不是一个简单的过程。 根据我以前的经验,我们必须手动执行一些繁琐的任务,例如:

  1. 将长按手势识别器添加到我们要拖动的视图中。
  2. 用户开始拖动时创建快照视图。
  3. 当用户在屏幕上拖动快照时,处理所拖动快照坐标的更新。
  4. 当用户将项目放到坐标位置时进行检测和处理。
  5. 同步放置的数据目标和拖动的数据源,然后分别更新UI。

即使完成所有这些任务,也很难使它顺利运行。 值得庆幸的是,随着iOS 11的发布,Apple终于在Cocoa Touch SDK中提供了拖放API。 自从iOS 12是移动操作系统的最新版本以来,iOS 11是iPad以来最大的OS更新,这是史蒂夫·乔布斯(Steve Jobs)在2010年1月首次推出该设备以来,它是第三台介于PC和智能手机之间的设备。 它支持多任务处理,其中多个应用程序同时在“分屏”和“滑行”界面上运行。 macOS的Dock也是首次引入,它允许用户自定义自己喜欢的应用程序和最近使用的应用程序。

拖放API是在应用之间进行通信的最佳方式。 以下是几个主要功能:

  1. 在iOS上支持系统范围的拖放。 使用拆分视图或拖动到Dock上的应用程序图标,可在应用程序之间移动文本,图像和文件。
  2. 拖放视图时,API会自动处理所有动画。 开发人员只需要实现协议即可获得更大的灵活性和定制性。
  3. 支持通过拖动一个项目并点击其他项目来拖动多个项目。

拖放式API

根据Apple文档页面,以下是拖放API概述的简要摘要:

  1. 拖放功能既可以在单个应用程序中运行,也可以在多个应用程序之间运行。 在iPhone环境中,拖放操作仅在单个应用程序中有效。 在多应用程序环境中,用户开始拖动视图的应用程序将成为源应用程序。 目标应用是用户将视图放置到的应用。
  2. 当用户正在执行拖放手势时,系统会启动“ Drag Activity 。 系统还管理用户通过Drag Session拖动的对象的状态。
  3. 可以将UIView配置为使用实现UIDragDelegateUIDropDelegate对象来支持拖放。 UITableViewUICollectionView都具有其自己单独的视图属性和协议,以处理单元格之间的拖放。 该API提供了自定义拖放行为的灵活性。
  4. 该系统还使用UTI (Uniform Type Identifier)安全,自动地处理应用程序之间的数据移动和加载,以处理文本,图像,联系人和其他许多内容。

我们将建立什么

在本教程中,我们将使用拖放API构建具有以下基本功能的类似Trello的应用程序:

  1. 创建一个木板。
  2. 将项目添加到板上。
  3. 使用拖放在木板之间移动项目。

为了成功创建这些功能,以下是我们将在项目中实现的任务:

  1. 应用流程图。
  2. 在Xcode中创建并设置我们的初始项目。
  3. 用包含项目的列表为委员会创建一个模型。
  4. 设置用户界面布局。
  5. 设置视图控制器和单元。
  6. 使用UITableViewDragDelegate处理在UITableView拖动项目。
  7. 使用UITableViewDropDelegate处理在UITableView删除项目的问题。

您可以在下面的GitHub存储库页面中克隆完成的项目存储库。

alfianlosari / KanbanDragDropiOS
使用拖放iOS API的看板。 通过创建一个帐户为alfianlosari / KanbanDragDropiOS开发做出贡献…… github.com

事不宜迟,让我们开始了解应用程序流程图。

应用流程图