开发者社区> 吞吞吐吐的> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 = 0 ; 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 = 0 ; 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];  
}  
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5283103.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发:下架App的步骤
首先登陆你的 iTunes Connect
0 0
2022 ios APP最新iOS开发上架测试教程
2022 ios APP最新iOS开发上架测试教程
0 0
[ios开发]-APP-上架流程
由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
0 0
iOS开发之打包上传到App Store——(一)各种证书的理解
iOS开发之打包上传到App Store——(一)各种证书的理解
0 0
IOS APP开发:苹果app从开发到上架教程详解
IOS APP开发:苹果app从开发到上架教程详解
0 0
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
0 0
iOS开发 - 穿针引线之内存管理(二)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - 穿针引线之内存管理(一)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - NSTimer极限使用(二)
iOS开发 - NSTimer极限使用
0 0
iOS开发 - NSTimer极限使用(一)
iOS开发 - NSTimer极限使用
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
From Java_Android to Swift iOS
立即下载
From Java/Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载