Latest 0.3.2
Homepage https://github.com/liujunliuhong/YHDragContainer
License MIT
Platforms ios 8.0, requires ARC
Authors

高度还原类似探探等社交应用的滑牌效果

本人参考了GitHub上其他关于滑牌的开源库,比如CCDraggableCard
CCDraggableCard只是对卡片的宽做了缩放,没有对高做缩放,另外,其还可以滑动和点击没有显示在最顶部的卡片,而且其没有提供当前滑动索引的方法,并且其属性在框架内部写死了,不能灵活配置。之前在使用的时候,由于这些原因导致我改动了大量的源代码,因此本人决定自己写一个扩展性好,可以灵活配置各种属性的滑牌库。

与其他的同类三方库对比的优点:

  • 滑牌属性可以自由定制
  • 通过数据源的方式来控制滑牌,内存占用低
  • 代理丰富,可以根据自己的需要来选择合适的代理

    即将加入的功能

  • 撤销功能
  • 增加往上滑动和往下滑动的回调

    效果预览

    YHDragContainer

安装

手动

Clone代码,把DragCard文件夹拖入项目,#import "YHDragCardContainer.h",就可以使用了

CocoaPods

pod 'YHDragContainer'

如果提示未找到,先执行pod repo update,再执行pod install

使用

1、滑牌属性配置

YHDragCardConfig *config = [[YHDragCardConfig alloc] init];
config.visibleCount = 3;
config.cardEdge = 15.0;
config.minScale = 0.9;

2、初始化

self.dragContainer = [[YHDragCardContainer alloc] initWithFrame:CGRectMake(30, 100, [UIScreen mainScreen].bounds.size.width - 30.0 * 2, 400) config:config];
self.dragContainer.dataSource = self; // 设置数据源
self.dragContainer.delegate = self; // 设置代理
[self.view addSubview:self.dragContainer];

3、刷新
初始化完成之后,请根据自己的实际项目需要,在合适的时机执行刷新

[self.dragContainer reloadData];

4、实现数据源协议(必须实现)

- (int)numberOfCardWithCardContainer:(YHDragCardContainer *)cardContainer{
    // 滑牌总数量
}
- (UIView *)cardContainer:(YHDragCardContainer *)cardContainer viewForIndex:(int)index{
    // 每个索引所对应的View
}

5、实现代理协议(非必须)

- (void)cardContainer:(YHDragCardContainer *)cardContainer didScrollToIndex:(int)index{
    // 当前滑动到某一个索引的回调
    // 在这里你可以实现分页,显示当前滑动到了第几个
}

- (void)cardContainerDidFinishDragLastCard:(YHDragCardContainer *)cardContainer{
    // 最后一个卡片滑完了的回调
    // 在这儿你可以做诸如请求下一页数据等操作
}

- (void)cardContainer:(YHDragCardContainer *)cardContainer dragDirection:(YHDragCardDirection)dragDirection widthRatio:(CGFloat)widthRatio heightRatio:(CGFloat)heightRatio{
    // 滑动过程中的回调
    // 提供了横向和竖向的滑动比例
    // widthRatio:  >0 右滑      <0 左滑
    // heightRatio: >0 下滑      <0 上滑
    // 在这里你可以实现一些动画效果,比如摊摊,在滑动过程中,按钮会随着滑动放大或者缩小
    // 注意:框架内部已实现了动画效果,因此在此处无需再实现动画效果
}

- (void)cardContainer:(YHDragCardContainer *)cardContainer didSelectedIndex:(int)index{
    // 点击某个卡片的回调
}

补充

该仓库会不断进行优化,在使用过程中,有任何建议或问题,欢迎提issue,或者通过邮箱[email protected]联系我
喜欢就star❤️一下吧

Latest podspec

{
    "name": "YHDragContainer",
    "version": "0.3.2",
    "summary": "u4effu63a2u63a2u6ed1u724cu5de6u53f3u6ed1u52a8uff0cu53efu4ee5u81eau7531u914du7f6eu5404u79cdu5c5eu6027",
    "description": "u4effu63a2u63a2u6ed1u724cu5de6u53f3u6ed1u52a8uff0cu53efu4ee5u81eau7531u914du7f6eu5404u79cdu5c5eu6027uff0cu6301u7eedu66f4u65b0u4e2d...",
    "homepage": "https://github.com/liujunliuhong/YHDragContainer",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "liujunliuhong": "[email protected]"
    },
    "source": {
        "git": "https://github.com/liujunliuhong/YHDragContainer.git",
        "tag": "0.3.2"
    },
    "platforms": {
        "ios": "8.0"
    },
    "requires_arc": true,
    "source_files": "YHDragContainer/DragCard/*.{h,m}"
}

Pin It on Pinterest

Share This