iOS11新特性:新增拖拽交互体验

          拖拽操作在iPad上是支持跨应用程序的,你可以从一个应用中拖取项目,通过Home键回到主界面并且打开另一个应用程序,然后将被拖拽的项目传递给这个应用程序中。在iPhone上,拖拽操作只支持当前应用程序内,你可以将某个元素从一个界面拖拽到另一个,这种维度的操作可以给设计人员更大的灵活性。拖拽操作被设计成系统管理,开发者不需要为App申请特殊的用户权限。

效果:

一、引言

在iOS11中,你可以将图片直接拖入聊天软件进行发送,可以将文档、音乐、视频文件等文件拖入相应应用程序直接进行使用。这种拖拽操作交互极大的方便了手机的使用,丰富了手机的用户体验感。

效果如图:

二、涉及关键的概念

主要涉及的大体概括的对象就是: 拖拽源(按住需要拖拽的控件)、

                                                          放置目标(拖拽到的目的地)、

                                                          拖拽行为(UIDragInteraction)、

                                                          放置行为(UIDropInteraction)。

粗俗的过程:把拖拽行为加在拖拽源上,放置行为加在放置目标上,然后分别实现拖拽行为代理(UIDragInteractionDelegate)和放置行为代理方法(UIDropInteractionDelegate),就能实现拖拽效果了。

三、UIDragInteractionDelegate协议

开始拖拽

开始拖拽

对刚开始拖动处于 lift 状态的 item 会有一个 preview 的预览功效

对刚开始拖动处于 lift 状态的 item 会有一个 preview 的预览功效

向当前已经存在的拖拽事件中添加一个新的 UIDragItem

向当前已经存在的拖拽事件中添加一个新的 UIDragItem

拖拽不同阶段的动画

当 lift 动画准备执行的时候会调用该方法
当取消动画准备执行的时候会调用这个方法
当用户完成一次拖拽操作,并且所有相关的动画都执行完毕的时候会调用这个方法,这时候被拖动的item 应该恢复正常的展示外观
设置拖拽动作取消的视图动画 返回nil则消除动画

四、UIDropInteractionDelegate协议

这个方法返回是否响应此放置目的地的放置请求

这个方法返回是否响应此放置目的地的放置请求

这个方法当用户进行放置后会调用,可以从session中获取被传递的数据

这个方法当用户进行放置后会调用,可以从session中获取被传递的数据

设置以何种方式响应拖放会话行为

设置以何种方式响应拖放会话行为

设置放置预览动画

设置放置预览动画

简单的实现就是这样,里面还涉及到很多,就不一一讲述,可以详细见demo 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,778评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • That one pixel ... Design matters. This White House GitHu...
    xubihang阅读 234评论 0 1