大图浏览常见的应用实例是朋友圈点击图片进入全屏的原图模式和基本的相册类功能。关键词是大(原)图浏览和左右滑动。一旦图片量较多时,肯定需要考虑到内存问题。之前一段时间自己做过一个类似的功能,就是浏览下载好的多达几百张的图片,当进入大图浏览时一次性加载完肯定会卡上一段时间才能呈现出图视图,而且会占据超大内存。当时做的时候考虑到了三种方法,一种是直接用scrollView来做,另外两种是基于tableview和collectionview来实现。
一、首先说UIScrollview,不用多说这个直接可以用来实现图片的左右划动效果,但是考虑到多图的内存问题,肯定要想办法来达到内存重用的目的。在这里一般创建三个内存空间用来存储ABC三张图片,然后划走A就让A的内存作为C的下一张图片的内存容器,循环下去,以此来来实现三块内存的不断复用。中间比较麻烦的是判断是否为第一张和最后一张图片,还有如何通过偏移量来设置frame不断变化的图片容器。另外需要注意的是,这也是我在实践中遇到的问题,三张图片内存复用时极快滑动图片,可能导致显示黑屏图片不能及时加载上的问题,所以也可以考虑使用四五张图片复用。
二、UICollectionView。这个才应该是常规操作,毕竟自带内存重用机制,而且实现较为简单,只需要在设置collectionview的滑动方向为水平方向的前提下,设置每个item宽度为屏宽,且间距为0即可,没有什么复杂的逻辑判断。不过要注意下是否支持横竖屏旋转。
三、UITableView和UICollectionView是一样的,思路也简单,把列表方向改为横向,cell大小根据屏幕设定即可,内存问题也不用考虑。不过思路虽然简单,中间的处理还是要费些功夫的。
这就是三种的大概思路,网上也都有demo可查,其实对于新手来说可以每种都尝试一下,相信定会受益匪浅。尤其对UITableView和UICollectionView的熟练使用和对内存重用机制的了解会有很大帮助。
先随便写写,后续可能再贴上具体demo。以前都是自己用Word记下一些问题、总结,以后也开始用简书了,希望能和大家一起进步成长!
网友评论