使用拖放API构建类似Trello的iOS应用
拖放是用户交互,当我们要构建一个用户可以在屏幕上移动数据的应用程序时,它很自然地起作用。 Trello,Jira等应用程序正在大量使用它在板之间移动数据。
在iOS 11 SDK发行之前通过拖放交互构建iOS应用程序并不是一个简单的过程。 根据我以前的经验,我们必须手动执行一些繁琐的任务,例如:
- 将长按手势识别器添加到我们要拖动的视图中。
- 用户开始拖动时创建快照视图。
- 当用户在屏幕上拖动快照时,处理所拖动快照坐标的更新。
- 当用户将项目放到坐标位置时进行检测和处理。
- 同步放置的数据目标和拖动的数据源,然后分别更新UI。
即使完成所有这些任务,也很难使它顺利运行。 值得庆幸的是,随着iOS 11的发布,Apple终于在Cocoa Touch SDK中提供了拖放API。 自从iOS 12是移动操作系统的最新版本以来,iOS 11是iPad以来最大的OS更新,这是史蒂夫·乔布斯(Steve Jobs)在2010年1月首次推出该设备以来,它是第三台介于PC和智能手机之间的设备。 它支持多任务处理,其中多个应用程序同时在“分屏”和“滑行”界面上运行。 macOS的Dock也是首次引入,它允许用户自定义自己喜欢的应用程序和最近使用的应用程序。
拖放API是在应用之间进行通信的最佳方式。 以下是几个主要功能:
- 在iOS上支持系统范围的拖放。 使用拆分视图或拖动到Dock上的应用程序图标,可在应用程序之间移动文本,图像和文件。
- 拖放视图时,API会自动处理所有动画。 开发人员只需要实现协议即可获得更大的灵活性和定制性。
- 支持通过拖动一个项目并点击其他项目来拖动多个项目。
拖放式API
根据Apple文档页面,以下是拖放API概述的简要摘要:
- 拖放功能既可以在单个应用程序中运行,也可以在多个应用程序之间运行。 在iPhone环境中,拖放操作仅在单个应用程序中有效。 在多应用程序环境中,用户开始拖动视图的应用程序将成为源应用程序。 目标应用是用户将视图放置到的应用。
- 当用户正在执行拖放手势时,系统会启动“
Drag Activity
。 系统还管理用户通过Drag Session
拖动的对象的状态。 - 可以将
UIView
配置为使用实现UIDragDelegate
和UIDropDelegate
对象来支持拖放。UITableView
和UICollectionView
都具有其自己单独的视图属性和协议,以处理单元格之间的拖放。 该API提供了自定义拖放行为的灵活性。 - 该系统还使用
UTI (Uniform Type Identifier)
安全,自动地处理应用程序之间的数据移动和加载,以处理文本,图像,联系人和其他许多内容。
我们将建立什么
在本教程中,我们将使用拖放API构建具有以下基本功能的类似Trello的应用程序:
- 创建一个木板。
- 将项目添加到板上。
- 使用拖放在木板之间移动项目。
为了成功创建这些功能,以下是我们将在项目中实现的任务:
- 应用流程图。
- 在Xcode中创建并设置我们的初始项目。
- 用包含项目的列表为委员会创建一个模型。
- 设置用户界面布局。
- 设置视图控制器和单元。
- 使用
UITableViewDragDelegate
处理在UITableView
拖动项目。 - 使用
UITableViewDropDelegate
处理在UITableView
删除项目的问题。
您可以在下面的GitHub存储库页面中克隆完成的项目存储库。
alfianlosari / KanbanDragDropiOS
使用拖放iOS API的看板。 通过创建一个帐户为alfianlosari / KanbanDragDropiOS开发做出贡献…… github.com
事不宜迟,让我们开始了解应用程序流程图。