iOS:第三方框架MJPhotoBrowser图片浏览器的使用
介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片、网络图片、gif图片等,其也依赖了SDWebImage、SVProgressHUD、YLGIFImage这些三方库,因为高度封装,所以集成起来比较简单,貌似已经停止更新并卸下了。下面看一些几个重要的类:
MJPhotoBrowser框架:http://files.cnblogs.com/files/XYQ-208910/MJPhotoBrowser.zip
图片模型类MJPhoto
MJPhoto.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import <YLGIFImage/YLImageView.h>
#import <YLGIFImage/YLGIFImage.h>
#import <SDWebImage/UIImageView+WebCache.h>
#import <SVProgressHUD/SVProgressHUD.h> @interface MJPhoto : NSObject @property (nonatomic, strong) NSURL *url; //图片链接
@property (nonatomic, strong) UIImage *image; // 完整的图片 @property (nonatomic, strong) UIImageView *srcImageView; // 来源view
@property (nonatomic, strong, readonly) UIImage *placeholder; //占位图片
@property (nonatomic, strong, readonly) UIImage *capture; //截图 // 是否已经保存到相册
@property (nonatomic, assign) BOOL save;
@property (nonatomic, assign) int index; // 索引 @end
MJPhoto.m
#import "MJPhoto.h" @implementation MJPhoto #pragma mark - 截图
- (UIImage *)capture:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
} - (void)setSrcImageView:(UIImageView *)srcImageView
{
_srcImageView = srcImageView;
_placeholder = srcImageView.image;
if (srcImageView.clipsToBounds) {
_capture = [self capture:srcImageView];
}
} @end
预览器类MJPhotoBrowser
MJPhotoBrowser.h
#import "MJPhoto.h" @protocol MJPhotoBrowserDelegate; @interface MJPhotoBrowser : NSObject <UIScrollViewDelegate>
// 所有的图片对象
@property (nonatomic, strong) NSArray *photos;
// 当前展示的图片索引
@property (nonatomic, assign) NSUInteger currentPhotoIndex;
// 保存按钮
@property (nonatomic, assign) NSUInteger showSaveBtn; // 显示图片
- (void)show; @end
集成过来使用的方法:
1.本地图片
-(void)addImage:(UIImage *)image
{
[self.photos addObject:image];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
imageView.contentMode = UIViewContentModeScaleToFill;
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(photoTap:)]];
[self addSubview:imageView];
} //点击预览图片
- (void)photoTap:(UITapGestureRecognizer *)recognizer
{
//1.创建图片浏览器
NSMutableArray *kjphotos = [NSMutableArray array];
MJPhotoBrowser *brower = [[MJPhotoBrowser alloc] init]; //2.告诉图片浏览器显示所有的图片
for (int i = ; i < self.photos.count; i++) {
//传递数据给浏览器
MJPhoto *photo = [[MJPhoto alloc] init];
photo.image = self.photos[i];
photo.srcImageView = self.subviews[i]; //设置来源哪一个UIImageView
[kjphotos addObject:photo];
}
brower.photos = kjphotos; //3.设置默认显示的图片索引
brower.currentPhotoIndex = recognizer.view.tag; //4.显示浏览器
[brower show];
}
2.网络图片
//监听图片的点击
- (void)tapPhoto:(UITapGestureRecognizer *)recognizer
{
//1.创建图片浏览器
MJPhotoBrowser *brower = [[MJPhotoBrowser alloc] init]; //2.告诉图片浏览器显示所有的图片
NSMutableArray *photos = [NSMutableArray array];
for (int i = ; i < self.photos.count; i++) {
Photo *pic = self.photos[i];
//传递数据给浏览器
MJPhoto *photo = [[MJPhoto alloc] init];
photo.url = [NSURL URLWithString:pic.bmiddle_pic];
photo.srcImageView = self.subviews[i]; //设置来源哪一个UIImageView
[photos addObject:photo];
}
brower.photos = photos; //3.设置默认显示的图片索引
brower.currentPhotoIndex = recognizer.view.tag; //4.显示浏览器
[brower show];
}
iOS:第三方框架MJPhotoBrowser图片浏览器的使用的更多相关文章
- iOS 第三方框架-SDWebImage
iOS中著名的牛逼的网络图片处理框架.包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等.用法极其简单,功能十分强大,大大提高了网络图片的处理效率.国内超过90%的iOS项目都有它的影子. ...
- iOS 第三方框架-Masonry
介绍地址:http://www.cocoachina.com/ios/20141219/10702.html 官网:https://github.com/SnapKit/Masonry 记住:一定要先 ...
- iOS 第三方框架-MJRefresh
MJRefresh是一款非常好用的上拉下拉第三方库,使用也很简单.github地址: https://github.com/CoderMJLee/MJRefresh . 下拉刷新 官方给过来的例子很简 ...
- iOS 第三方框架-MBProgressHUD
MBProgressHUD提示框官网地址:https://github.com/jdg/MBProgressHUD 官网里已经提供了足够多的例子供我们使用,但在实现开发中,我们用到的只是其中的一小部分 ...
- iOS - 第三方框架 - AFN
#5.AFNetworking 2.6使用方法 >2.6版本 支持 iOS7以上,而且支持NSURLConnectionOperation >3.0版本 支持 iOS7以上 NSURLCo ...
- iOS 第三方框架-MJExtension
1.数组转换成模型数组 // 将 "微博字典"数组 转为 "微博模型"数组 NSArray *newStatuses = [HWStatus objectArr ...
- iOS第三方Api及常用框架总结
iOS常用框架汇总: SVProgressHUD:产生覆盖层,禁止某种操作 SDWebImage: 专业下载图片框架 AFN:网络数据请求框架 MJExtension,模型对象之间互转 第三方分享第三 ...
- 史上最全的常用iOS的第三方框架
文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片 ...
- 常用iOS的第三方框架
图像:1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...
随机推荐
- Linux Python apache的cgi配置
一.找到安装Apache的目录/usr/local/apache2/conf,并对httpd.conf配置文件进行修改 1.加载cgi模块 去掉注释: LoadModule cgid_module m ...
- linux命令(50):top命令
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
- Git 分支 - 分支的新建
https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA% ...
- Storm实战常见的问题
该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实 ...
- 插入排序(InsertionSort)
算法描述 插入排序是在一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序.插入排序是一种稳定的排序. 基本思想 插入排序是在一个已经有序的小序列的基础上, ...
- 【SQL】oralce中使用group by和case when按照条件求和
假设我们有一个Salary 薪水表.这个表的字段分别为:id, name, salary, level 在这个表中,每个人有不同的级别(level).我们要根据不同的级别统计相同级别员工的薪水总和. ...
- 最正确的React事件绑定方式
参考这篇文章:Choosing the Best Approach for React Event Handlers 1.function.bind()方式 2.inline arrow functi ...
- WebService协议
http://www.cnblogs.com/lm3515/archive/2011/03/17/1987009.html http://blog.csdn.net/chjttony/article/ ...
- 【模拟退火】poj2420 A Star not a Tree?
题意:求平面上一个点,使其到给定的n个点的距离和最小,即费马点. 模拟退火的思想是随机移动,然后100%接受更优解,以一定概率接受更劣解.移动的过程中温度缓慢降低,接受更劣解的概率降低. 在网上看到的 ...
- 重拾vue1
vue 一.认识Vue 定义:一个构建数据驱动的 web 界面的渐进式框架 优点: 1.可以完全通过客户端浏览器渲染页面,服务器端只提供数据 2.方便构建单页面应用程序(SPA) 二.引入Vue &l ...