美文网首页iOS 进阶
iOS 实现拖动cell时排列位置

iOS 实现拖动cell时排列位置

作者: 字节码 | 来源:发表于2016-11-09 02:23 被阅读0次

    闲暇时间实现了一个小框架,欢迎查看!

    简单实现:拖动cell时对其重新排列位置(适用collectionView和tableView)

    GitHub链接: https://github.com/Ossey/XYRearrangeCell

    2016-11-09 00_03_21.gif

    Features(特征)

    • 在不影响原有类的情况下,直接调用UIView的1个分类方法即可实现:长按cell拖动时对其进行重新排列

    • 支持collectionView和tableView的分组和非分组模式

    • 一行代码即可实现

    • 在长按cell进行拖动时,内部会拿到当前的数据进行处理,最后通过block回调处理完成的数据给外界,外界刷新数据

    • 由于刷新的是模型数据,所以不不必担心cell循环利用问题

    Usage(使用方法)

    • 将XYRearrangeView文件拖到项目中,导入头文件
    • tableView和collectionView都可以调用这个方法即可实现
    #import "XYRearrangeCell.h"
    
    [self.tableView xy_rollViewOriginalDataBlock:^NSArray *{
        // 返回当前的数据给tableView内部处理
            return self.plans; 
        } callBlckNewDataBlock:^(NSArray *newData) {
            // 回调处理完成的数据给外界刷新
            [self.plans removeAllObjects];
            [self.plans addObjectsFromArray:newData];
      }];    
    

    Other(其他用法)

    • 上面的使用方法是在当前控制器的view就是tableView或collectionView时调用方法,您也可以使用类方法,创建对象时调用更方便,比如以下:
     UICollectionView *collectionView = [UICollectionView xy_collectionViewLayout:flowLayout originalDataBlock:^NSArray *{
            return self.plans;
        } callBlckNewDataBlock:^(NSArray *newData) {
            [self.plans removeAllObjects];
            [self.plans addObjectsFromArray:newData];
        }];
    
    
    • autoRollCellSpeed: cell拖拽到屏幕边缘时,控制其他cell的滚动速度:
      数值越大滚动越快,默认为5.0,注意临界点的值,如果要设置为0时,设置为0.01才有效,最大为15
    @property CGFloat autoRollCellSpeed;
    
    
    • 注意: 使用时不用调用reload,内部已经处理了

    Prepare

    • 已实现普通的左滑删除)
    2016-11-09 00_06_42.gif

    相关文章

      网友评论

        本文标题:iOS 实现拖动cell时排列位置

        本文链接:https://www.haomeiwen.com/subject/apyzuttx.html