在公司开发项目中需要弹出展示从网络上下载的图片,并提供滑动展示功能。目前采用同事开发的图片浏览器,后期有时间想优化一下。所以重温了下以前开发的类似微博的项目中的图片浏览器代码,并抽取出来封装成了现在这个框架。

目前功能还比较简陋,有时间慢慢优化。扩展本地和网络图片以及其他支持吧。

Github下载地址:https://github.com/jakciehoo/HooPhotoBrowser

实现功能

  1.设置图片地址数组,从地址获取当前选择图片,然后展示当前图片(可设置默认显示第几张图片)

  2.提供图片下载进度动画,下载成功显示下载图片,下载过程中给出进度提示动画,下载失败提供下载失败提示。

  3.工具栏展示图片信息,并提供保存到本地相册功能

  4.对代码做了内存优化。

效果图展示

添加到项目

  1.项目依赖SDWebImage,因此需要你的项目添加SDWebImage框架,下载地址:https://github.com/rs/SDWebImage

  2.将Demo中的HooPhotoBrowser拷贝到项目中。

调用方法

HooPhotoBrowser的调用方法,可以参考demo。这里我先把调用代码写出来。

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(, , , );
imageView.image = [UIImage imageNamed:@"uc_header_background.jpg"];
[self.view addSubview:imageView];
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapToShow:)];
tap.numberOfTapsRequired = ;
[imageView addGestureRecognizer:tap]; } - (void)tapToShow :(UITapGestureRecognizer *)tap {
UIImageView *tapView = (UIImageView *)tap.view;
NSArray *images = @[@"http://images.asiatravel.com/Hotel/8016/8016facade.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016logo.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016bathroom.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016standard_room.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016lobby-cafe.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016lobby-reception.jpg",
@"http://images.asiatravel.com/Hotel/8016/8016pool.jpg"];
NSInteger i = ;
NSMutableArray *pArray = [NSMutableArray array];
for (NSString *url in images) {
HooPhoto *photo = [[HooPhoto alloc] init];
photo.url = [NSURL URLWithString:url];
photo.index = i;
photo.sourceImageView = tapView;
[pArray addObject:photo];
i++;
}
HooPhotoBrowser *photoBrowser = [[HooPhotoBrowser alloc] init];
photoBrowser.currentPhotoIndex = ;
photoBrowser.photos = pArray;
[photoBrowser show];
}

最后欢迎大家参考学习。并欢迎大家关注我的微信公众号,互相学习。

我的微信公众号:丁丁的coding日记

开源一个网络图片浏览器HooPhotoBrowser的更多相关文章

  1. Android(java)学习笔记201:网络图片浏览器的实现(ANR)

    1.我们在Android下,实现使用http协议进行网络通信,请求网络数据.这里是获取网络上的图片信息,让它可以显示在手机上: 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个 ...

  2. Android(java)学习笔记144:网络图片浏览器的实现(ANR)

    1.我们在Android下,实现使用http协议进行网络通信,请求网络数据.这里是获取网络上的图片信息,让它可以显示在手机上: 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个 ...

  3. 如何创建一个Edge 浏览器扩展

    随着微软Windows 10 年度更新的发布,数次延宕的Edge 扩展功能终于得到了官方正式支持.我在我的另外一个博客上发布了如何创建一个Edge 浏览器扩展的博文,链接如下: https://blo ...

  4. 开源一个Java Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了

    开源一个Java Class实现Openfire登陆.推出.消息发送 N年前写的,希望对Openfire开发新手有帮助哦 import java.util.*; import java.io.*;   ...

  5. 调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)

    调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)

  6. Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console、file等。Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。

    Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console.file等.Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别. ...

  7. Microsoft SilverLightt是一个跨浏览器的、跨平台的插件,为网络带来下一代基于.NETFramework的媒体体验和丰富的交互式应用程序。

    Microsoft Silverlight是一个跨浏览器的.跨平台的插件,为网络带来下一代基于.NETFramework的媒体体验和丰富的交互式应用程序.Silverlight提供灵活的编程模型,并可 ...

  8. 开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码

    开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码. 开源地址: https://github.com/jkpang/PPRows

  9. 一款开源免费跨浏览器的视频播放器--videojs使用介绍

    最近项目中的视频功能,需要做到浏览器全兼容,所以之前用html5实现的视频功能就需要进行改造了.在网上翻了个遍,试来试去,在所有的视频播放器中,就数它最实际了.首先我们来看看它的优点: 1.它是开源免 ...

随机推荐

  1. flume原理及代码实现

    转载标明出处:http://www.cnblogs.com/adealjason/p/6240122.html 最近想玩一下流计算,先看了flume的实现原理及源码 源码可以去apache 官网下载 ...

  2. centos6.5安装node.js

    一次偶然的机会知道有nodejs这个东西,确实对它还是很感兴趣的.刚开始只知道它能让javascript写后台,然后前后台都由javascript来写,确实觉得真的挺爽,毕竟人总是喜欢在自己熟悉领域做 ...

  3. LoadRunner ERROR:Could not call flex.messaging.io.amf.ASObject.readObject() : Cannot parse date.

    Error: Encoding of AMF message failed. Error is : Exception Occurred while invoking WriteObject meth ...

  4. 手机版web相关meta配置

    若页面需默认用ie兼容内核,增加标签: 若页面需默认用ie标准内核,增加标签: --> 页面标题

  5. C#获取全部目录和文件

    public class FileAccess{ //储存所有文件夹名 private ArrayList dirs; public FileAccess() { dirs = new ArrayLi ...

  6. UIKit框架

    在今后的应用程序构建中,会陆续使用各式各样的控件,因此UIKit框架的引入是必不可少的! 一.简介 UIKitk框架提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口.应 ...

  7. 判断整数是否能被n整除

    (1)1与0的特性:         1是任何整数的约数,即对于任何整数a,总有1|a.         0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是0.2.4.6或 ...

  8. session放入缓存(redis)、DB

    为什么要把SESSION保存在缓存 就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_s ...

  9. 【EasyUI】combotree和combobox模糊查询

    这里说的模糊查询指在输入框输入,然后自动在下拉框中显示匹配结果,类似Google搜索提示 EasyUI库已经实现了combobox的查询过滤功能,但只能从头匹配,原因是EasyUI库的代码限制: fi ...

  10. DynamicJson

    json字符串解析成Dynamic对象,开源地址http://dynamicjson.codeplex.com/,访问比较慢.使用方法摘录如下: Project Descriptiondynamic ...