图片浏览器TFImageBrowser

项目地址:TFImageBrowser

一个方便的图片浏览器,提供图片资源,可横向查看、切换图片。

使用

使用pod search "TFImageBrowser" --simple查找最新版,使用cocoapods集成。

github上的这个项目是使用实例+图片浏览器代码。


注意:让图片浏览器和SDWebImage共享缓存,打开EnableSDWebImageResolver宏。

#define EnableSDWebImageResolver   1  //启用SDWebImage解析图片
复制代码

YYWebImage类似,开关宏为EnableYYWebImageResolver


1. 支持多种图片资源
  • 图片资源可以是字符串,如网络连接地址、本地文件或MainBundle内的图片名
  • 可以是系统的资源类型,如PHAssertALAssert
  • 也可以是UIImage类型

各种图片资源类型可以混合在同一组里,也就是同一次浏览的图片里可以同时包含网络图片、相册图片等。

2. 可以和其他的图片缓存库共享

如果你有一张图片,是用SDWebImage下载并管理缓存的,把这个图片的URL传给图片浏览器后,只需指定SDWebImage相关的解析器,就可以使用共享的缓存,而不会重新在下载一遍。

默认还有YYWebImage的解析器,可以让图片资源和YYWebImage共享。

3. 可显示iCloud原图

开启相册空间优化后,相册的图片会把原图保存在iCloud上,本地只是模糊的缩略图。

使用TFImageBrowser查看相册图片资源时,如果图片在iCloud上,会跟处理其他网络资源一样下载下来显示大图。

4. 支持双击放大查看等交互
  • 双击放大图片查看,并且根据点击位置,放大点击的区域。
  • 单击图片关闭图片浏览器
  • 长按图片回调事件
  • 支持横竖屏旋转
5. 自带过场动画
[self showImageBrowser:_browserVC 
fromRect:CGRectMake(40, 400, 30, 200) 
transitionDuration:0.25f 
showType:(TFImageBrowerShowTypePresentDismiss)];

复制代码

使用上面方法来显示图片浏览器,会使用特定过场动画:右一块小区域逐渐放大到全屏,就像系统相册点击查看大图时那样。

6.可以配置的进度条

对于网络加载的图片资源,会不断反馈下载进度,如果配置了进度条,则会显示进度。

UIProgressView *progressBar = [[UIProgressView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2.0 - 50, [UIScreen mainScreen].bounds.size.height/2.0, 100, 20)];
_browserVC.progressView = progressBar;
复制代码

进度条只需要是UIView类型,并且实现了setProgress:方法即可。所以可以自定义任意的进度条提供给图片浏览器。

这个库还提供了一种圆形的进度条实现,可以自定义大小、颜色、环形宽度等。如:

关于项目框架

主体是图片浏览器TFImageBrowserViewController和显示每个图片的TFImageBrowserImageView

因为图片资源可以有多种不同的描述方式,所以定义了协议TFImageBrowserImageUri,每种实现这个协议的类都可描述一种图片资源类型,已有的类型是上面提到的3种。

提供给imageBrowser的数据是NSArray<id<TFImageBrowserImageUri>> *allImages,即都是抽象类型,然后每种图片资源该怎么得到图片数据,就靠解析器。解析器是实现协议TFImageUriDataResolver的类型,它的作用是接收一个imageUri,然后解析器负责把这个资源解析成UIImage,在回调给界面显示。

然后从图片数据到显示的逻辑都TFImageBrowserImageDisplayTool来负责,比如该请求缩略图还是大图、是否显示进度条等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值