Skip to content

此demo是一个图片浏览集成模块,支持横竖屏,放大缩小,内存已优化,能够进行多张图片进行查看,淡入浅出的动画效果。代码简单易懂,封装层次分明。

TiYcc/ImageBrower

Repository files navigation

该YTMultipleBrowser文件下为作者分享的多图浏览器简单封装 依赖第三库SDWebImage
YTPhotoBrowseView: 使用

------------------ 开始 ------------------
#import "YTPhotoBrowseView.h" //导入头文件

// 创建YTPhotoBrowseView类对象
YTPhotoBrowseView *photoBrowseView = [[YTPhotoBrowseView alloc]initWithFrame:frame andSetingModel:nil];
photoBrowseView.delegate = self;
photoBrowseView.dataSource = self;

// 调用or刷新 photoBrowseView 界面
[photoBrowseView reloadDataAtPage:page];

// 实现代理
// 多少张图片
- (NSInteger)numberOfPhotosInPhotoBrowseView:(YTPhotoBrowseView *)photoBrowseView;
// page对应图片信息
- (YTPhotoInfo *)photoBrowseView:(YTPhotoBrowseView *)photoBrowseView photoInfoAtPage:(NSInteger)page;
------------------ 完 -------------------

YTPhotoBrowseView:
1.对加载gif图片内纯消耗过大做了处理。(牺牲cpu,降低内存消耗,避免内存过高报警,导致程序异常运行)(网络gif图片会加载到硬盘里)
2.通过三张图片复用来实现整个框架图片浏览,控制内存消耗过高
3.支持屏幕旋转更新内部控件布局
4.图片缩放机制,正常显示按比例显示在整个页面上,缩放过程不会被拉伸,可以放大到图片原始大小(有效的展示长图,方便浏览)
5.其他效果可以通过自己使用体会到
6.有什么不好的地方,或者需要改进的地方,甚至否定该程序有更好的方式来实现。希望能够联系我并告诉我,很是感谢,学无止境。(最下面有联系方式)

具体使用方法可以产考ViewController/MemoryViewController/SimpImageViewController
ViewController 是简单的使用
MemoryViewController/SimpImageViewController 是稍微复杂点的使用
MemoryViewController是针对加载gif图片内存消耗过大做了处理,仅仅为了展示给使用者一个明确的对比。

真机(iphone6)测试:网络图片  一个界面同时加载7张gif图片
MemoryViewController(优化处理)     内存消耗 45Mb+     cpu %40 左右
SimpImageViewController(未优化)    内存消耗 180Mb+    cpu %0 左右

为何要这样处理gif图片
1,多张gif同时显示,内存会急剧升高,开发应避免多张gif图片同时加载在内存里
2,即便不显示出来,把多张gif图片加载到运行内存里,也是一件危险的事情,运行内存的消耗是要远大于gif图片真实的大小的。
3,系统UIImageView加载gif图片,gif图片包含的图片数量越多,内存消耗越高,和gif图片本身大小关系不大。
4,极端情况下,一张(图片数很多)gif图片就能让程序内存严重过高出现闪退
5,由于多种不确定性,提高cpu的消耗,来降低内存的消耗,经过大量测试这种方式可以有效
并且很好的降低程序因内存过高而出现异常和闪退。

最后: 也许这种观点不对,或者处理的方式不够好,可以进行讨论和交流,如果你有更好的方法,希望能够告知,感谢你的支持。

联系方式  Email:ycctime@icloud.com  qq: 1363603076

About

此demo是一个图片浏览集成模块,支持横竖屏,放大缩小,内存已优化,能够进行多张图片进行查看,淡入浅出的动画效果。代码简单易懂,封装层次分明。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published