当前位置: 首页 > 软件库 > iOS代码库 > 图像(Image) >

WZRecyclePhotoStackView

iOS 图片操作
授权协议 MIT
开发语言 Objective-C
所属分类 iOS代码库、 图像(Image)
软件类型 开源软件
地区 国产
投 递 者 卫弘义
操作系统 iOS
开源组织
适用人群 未知
 软件概览

大家想象一下,自己当捧着一堆照片的时候,我们是如何去放置我们的照片的? 可能我们会挑选出我们喜欢的照片放到相册中珍藏,也有可能我们把不喜欢的扔掉。 同时我们还会存在犹豫不觉的情况,觉得,哎,我先放到后面去,一会再看吧。 当然,也有可能,您会考虑,哎,我之前一张是什么图来着,我忘记了,我拿回来看看。

WZRecyclePhotoStackView 就是模拟这种生活中的情形而产生的。 在上滑,下滑的部分,借鉴了TinderSimpleSwipeCards

这个StackView的优势是什么?

  • 采用了内存池的设计方式,对于非图片开销,只生成了两个(可配置个数)的容器循环复用

  • 避免了一次性加载数据的内存开销和时间损耗,通过可配置的方式将大量的数据通过多次小部分添加加载进内存中。 同时通过预取的方式将这些新的数据自动补充进需要显示的位置。(在预取过程中您完全可以按照需要修改为异步回调形式)

  • 支持左滑、右滑操作。右滑跳过当前照片,将照片置为底部,最后查看。左滑将底部照片拉回顶部,设置为当前查看。

  • 高度定制化

使用

    typedef NS_ENUM(NSUInteger, WZPhotoStackStatus)
    {
        WZPhotoStackStatusLike = 0,    //上滑 作为喜欢
        WZPhotoStackStatusSkip = 1,    //右滑 作为将照片置于底部
        WZPhotoStackStatusPullBack = 2,//左滑 作为将底部照片取回
        WZPhotoStackStatusHate = 3     //下滑 作为讨厌
    };

    @protocol WZPhotoStackViewDataSource <NSObject>
    @required
    - (UIImage *)photoForSkipQueueInStack:(WZPhotoStackView *)stackView;
    - (UIImage *)photoForRatingQueueInStack:(WZPhotoStackView *)stackView;
    - (NSUInteger)numberOfRatingPhotosInStack:(WZPhotoStackView *)stackView;
    - (NSUInteger)numberOfSkipPhotosInStack:(WZPhotoStackView *)stackView;
    - (BOOL)canFetchMoreDataInStack:(WZPhotoStackView *)stackView;
    - (void)fetchMoreDataFromCoreDataInStack:(WZPhotoStackView *)stackView;
    - (void)fetchSkipPhotosInStack:(WZPhotoStackView *)stackView;

    @end

    @protocol WZPhotoStackViewDelegate <NSObject>
    @optional
    - (void)didSkipPhoto:(UIImage *)photo       inStackView:(WZPhotoStackView *)stackView;
    - (void)didBringBackPhoto:(UIImage *)photo  inStackView:(WZPhotoStackView *)stackView;
    - (void)didRatePhotoAsLike:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView;
    - (void)didRatePhotoAsHate:(UIImage *)photo inStackView:(WZPhotoStackView *)stackView;
    - (void)didFinishRateAllPhotosInStackView:(WZPhotoStackView *)stackView;
    @end

只要在您的viewcontroller中添加如下代码即可

self.stackView = [[WZPhotoStackView alloc] initWithFrame:CGRectMake(0,
                                                                0,
                                                                CGRectGetWidth(self.view.frame),
                                                                CGRectGetHeight(self.view.frame))];

[self.view addSubview:self.stackView];

self.stackView.delegate = self;
self.stackView.dataSource = self;

效果

 相关资料
  • 目标 获取像素的值并更改它们 获取图像属性 设置感兴趣的区域(Region of Interest,ROI) 分割和合并图像 几乎所有这些操作都和 Numpy 相关而和 OpenCV 没什么关系。精通 Numpy 对于写高度优化的 OpenCV 代码是必要的。 (例子将使用 Python 控制台,因为它们中大多数程序都只是一行代码) 获取和更改像素的值 让我们先读取一个彩色图片: >>> impo

  • 本文向大家介绍PHP图片处理之图片背景、画布操作,包括了PHP图片处理之图片背景、画布操作的使用技巧和注意事项,需要的朋友参考一下 像验证码或根据动态数据生成统计图标,以及前面介绍的一些GD库操作等都属于动态绘制图像。而在web开发中,也会经常去处理服务器中已存在的图片。例如,根据一些需求对图片进行缩放、加水印、裁剪、翻转和旋转等改图的操作。在web应用中,经常使用的图片格式有GIF、JPEG和P

  • 我试图在另一个片段中显示一个谷歌地图片段,但是我不能操纵地图,我已经把我看到的所有步骤都留档了,但是我不能操纵我的地图。 XML代码: 类片段代码: 主要活动类别代码: } 在调用getMapAsync()后,编辑以下堆栈跟踪: 空指针错误: 12-18 19:51:50.056 11265-11265/ar.com.taxiexpress.taxiexpressE/AndroidRuntime:

  • 本文向大家介绍python3操作微信itchat实现发送图片,包括了python3操作微信itchat实现发送图片的使用技巧和注意事项,需要的朋友参考一下 两个代码,一个是把python当微信操作,可以查看自己的好友信息,群信息等。还可以定时发送文本,文件等。效果就和你本人操作一样,没差别。 还有一个是连接你的微信和图灵机器人,别人和你说话可以自动回复(非常愚蠢)。 itchat.search_f

  • 本文向大家介绍Android利用Intent实现读取图片操作,包括了Android利用Intent实现读取图片操作的使用技巧和注意事项,需要的朋友参考一下 本文实例演示如何从图库(Gallery)中读取图像并用ImageView将它显示出来,供大家参考,具体内容如下 运行本示例前,需要先利用相机模拟拍摄一些图片到图库中。 1、运行截图    2、主要设计步骤 (1)添加ch1203_ReadGal

  • 本文向大家介绍Java实现用Mysql存取图片操作实例,包括了Java实现用Mysql存取图片操作实例的使用技巧和注意事项,需要的朋友参考一下 1.MySQL中的BLOB类型   Mysql中可以存储大文件数据,一般使用的BLOB对象。如图片,视频等等。   BLOB是一个二进制大对象,可以容纳可变数量的数据。因为是二进制对象,所以与编码方式无关。有4种BLOB类型:TINYBLOB、BLOB、M

  • 本文向大家介绍Android利用LitePal操作数据库存取图片,包括了Android利用LitePal操作数据库存取图片的使用技巧和注意事项,需要的朋友参考一下 Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很多数据库语言里,处

  • 本文向大家介绍关于vue的列表图片选中打钩操作,包括了关于vue的列表图片选中打钩操作的使用技巧和注意事项,需要的朋友参考一下 首先 css,美化checkbox样式,这一段代码拿过去可以直接用 接着是内容部分,这里变量命名比较乱,但是效果都是通过变量控制的,主要思路是点击后,将一个id传入一个临时数组,再遍历这个临时数组,拿数组中的值与当前值对比,如果对比成功,那么就让选中的checkbox显示