高仿微信和今日头条图片浏览器(LBPhotoBrowser)
这是目前第四个大的版本了,demo做的也比较详细. 相关的详细介绍和demo的下载地址 --> 请移步
github地址: https://github.com/tianliangyihou/LBPhotoBrowser
概览(Overview)LBPhotoBrowser对gif图片的加载机制:
LBPhotoBrowser对gif的播放提供了两种方式: (1)利用系统的 + (nullableUIImage*)animatedImageWithImages:(NSArray *)images duration:(NSTimeInterval)durationNS_AVAILABLE_IOS(5_0); (2)自定义gif的播放,具体步骤如下: * 获取当前手机可以采用的内存和当前展示的gif图片每帧图片加载到内存占用的大小,以取得当前内存可以加载gif的最大帧数. 最大加载帧数 = 可采用内存 / 每帧图片的大小. * 使用CADisplayLink作为定时器,开始展示当前帧的图片 * 获取当前帧的展示时间,展示完毕,切换下一帧图片.当在展示当前帧的图片的时候, 异步线程(自定义NSOperation)去取下一帧的图片,以供当前帧的图片展示 完毕后,直接从缓存的buffer(字典)中读取. * 当gif图片的帧数大于当前内存适合加载的帧数的时候,buffer(字典)会不断的移除已展示过的图片,来确保加载到内存中的图片数稳定. 如果小于可加载的最大帧数,直接全部加载到内存,节省CPU. * LBPhotoBrowser为了保证较低的CPU消耗,即使在图片浏览器加载多张gif的时候,也会保证同一时间内,只会对一张gif进行处理,不会同时去解压多张gif图片. 建议使用第二种加载方式 即 lowGifMemory = YES, 通过 LBPhotoBrowserManager 的 lowGifMemory 属性控制 当你加载的gif图片较多,并且gif的帧数也比较多,两种方式的差别会特别明显,方式2的优点也越明显.(不要使用模拟器测试)LBPhotoBrowser对网络图片的预加载机制:
LBPhotoBrowser 将网络图片的加载分为两种: (1)缩略图和大图使用同一个url 不需要提供预加载 (2)缩略图和大图使用不同的url 提供预加载 * 当点击图片,通过LBPhotoBrowser展示大图的过程中,LBPhotoBrowser会自动提前加载当前图片左右两张图片,以方便会员浏览 * 当会员在滑动图片的过程中,LBPhotoBrowser会始终保持优先加载当前展示图片和当前展示图片左右两张的图片,并且停止离当前图片较远图片的加载 * 当会员退出LBPhotoBrowser,停止所有图片的加载 当你使用(1)展示图片的时候,请设置`LBPhotoBrowserManager`的`needPreloading` = `NO`. 注: 缩略图: 当前展示给会员的图片 大图: 点击缩略图后,使用LBPhotoBrowser展示给会员的图片,论文,开题报告