zoukankan      html  css  js  c++  java
  • iOS仿网易新闻栏目拖动重排添加删除效果

    仿网易新闻栏目选择页面的基本效果,今天抽了点时间教大家如何实现UICollectionView拖动的效果!

    其实实现起来并不复杂,这里只是基本的功能,没有实现细节上的修改,连UI都是丑丑的样子,随手画的。

    相信大家都使用过网易新闻客户端,里面的效果确定被不少人模仿,很多同类型的app都采用了人家的UI样式,那么今天就教大家如何去实现。

    效果图

    这是简略的效果图,样子是有点丑,将就看看吧:

    标哥的技术博客

    实现原理

    给UICollectionView添加一个手势或者其他方式,在长按时手动触发拖动开始,在移动过程中又要不断手动地更新位置,而在完成时手动触发完成操作,在取消时也要手动触发取消移动操作。

    而要实现移动,必须设置是否可移动。比如我们的demo中第一个分区是要求移动的,而第二个分区是不允许移动的,因此我们需要通过代理来设置是否可移动。

    在移动完成时,会有代理回调,此时我们要做的就是交换数据源来更新。

    移动API介绍

    首先我们必须要明确,这几个API是在iOS9之后才能使用的。这几个API来配合起来使用,才能最终达到我们期望的效果。

    这四个API组合起来才是完整的动作。

    添加长按手势

    我们需要将手势放到CollectionView上,因为我们要的是操作全范围的!

    处理手势

    这个基本是固定的,大家可以copy一下我的代码过去用就可以了:

    是否允许移动

    这里是只有在编辑状态下且第一分区才能拖动重排,所以通过添加条件来控制是否可移动:

    完成移动更新源

    我们只有第一分区可以操作,而这里只有一个数组,所以直接交换一下数据源就OK了:

    添加删除移动效果

    在点击第一分区时或者第二分区的cell时,会自动移动到第二分区或者第一分区。我们希望有移动的动画效果的话,就需要通过collectionview提供的API来完成,而编辑状态下有删除按钮,而到二分区时就不能显示,而在一分区在编辑状态下又可以显示:

  • 相关阅读:
    mobx的一个记录
    前端模块规范AMD/UMD/CommonJs
    CSS3字体大小单位的认识px/em/rem
    各浏览器之间的字号检测
    react整理一二(初入React世界)
    Node.js中实现套接字服务
    闲来无事,把node又拾起来看看
    判断类型
    html5 搜索框
    CSS 设置placeholder属性
  • 原文地址:https://www.cnblogs.com/niceMan/p/5795378.html
Copyright © 2011-2022 走看看