图片选择器,看cocoachina发现一个有趣的框架,很好用,分享一下,其实做出该功能我之前写过一篇博客,使用转场动画写的,就是图片的手势缩放没写,有兴趣可以看看

效果图:

github地址:https://github.com/coder-zwz/MJPhotoBrowser

使用:

#import "ViewController.h"
#import "MJPhotoBrowser.h"
@interface ViewController ()
{
NSArray *_urls;
}
@end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
// 0.图片链接
_urls = @[@"http://ww4.sinaimg.cn/thumbnail/7f8c1087gw1e9g06pc68ug20ag05y4qq.gif", @"http://ww3.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr0nly5j20pf0gygo6.jpg", @"http://ww4.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr1d0vyj20pf0gytcj.jpg", @"http://ww3.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr1xydcj20gy0o9q6s.jpg", @"http://ww2.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr2n1jjj20gy0o9tcc.jpg", @"http://ww2.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr39ht9j20gy0o6q74.jpg", @"http://ww3.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr3xvtlj20gy0obadv.jpg", @"http://ww4.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr4nndfj20gy0o9q6i.jpg", @"http://ww3.sinaimg.cn/thumbnail/8e88b0c1gw1e9lpr57tn9j20gy0obn0f.jpg"]; // 1.创建9个UIImageView
UIImage *placeholder = [UIImage imageNamed:@"timeline_image_loading.png"];
CGFloat width = 80;
CGFloat height = 80;
CGFloat margin = 5;
CGFloat startX = (self.view.frame.size.width - 3 * width - 2 * margin) * 0.5;
CGFloat startY = 80;
for (int i = 0; i<9; i++) {
UIImageView *imageView = [[UIImageView alloc] init];
[self.view addSubview:imageView]; // 计算位置
int row = i/3;
int column = i%3;
CGFloat x = startX + column * (width + margin);
CGFloat y = startY + row * (height + margin);
imageView.frame = CGRectMake(x, y, width, height); // 下载图片
[imageView setImageURLStr:_urls[i] placeholder:placeholder]; // 事件监听
imageView.tag = i;
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImage:)]]; // 内容模式
imageView.clipsToBounds = YES;
imageView.contentMode = UIViewContentModeScaleAspectFill;
}
} - (void)tapImage:(UITapGestureRecognizer *)tap
{
NSInteger count = _urls.count;
// 1.封装图片数据
NSMutableArray *photos = [NSMutableArray arrayWithCapacity:count];
for (int i = 0; i<count; i++) {
// 替换为中等尺寸图片
NSString *url = [_urls[i] stringByReplacingOccurrencesOfString:@"thumbnail" withString:@"bmiddle"];
MJPhoto *photo = [[MJPhoto alloc] init];
photo.url = [NSURL URLWithString:url]; // 图片路径
photo.srcImageView = self.view.subviews[i]; // 来源于哪个UIImageView
[photos addObject:photo];
} // 2.显示相册
MJPhotoBrowser *browser = [[MJPhotoBrowser alloc] init];
browser.currentPhotoIndex = tap.view.tag; // 弹出相册时显示的第一张图片是?
browser.photos = photos; // 设置所有的图片
[browser show];
} @end

OC照片选择器MJPhotoBrowser的更多相关文章

  1. iOS解决隐藏导航栏后,打开照片选择器后导航栏不显示的问题以及更换导航栏背景色

    问题描述: 遇到一种情况,在一个控制器上(隐藏了导航栏),打开照片选择器 UIImagePickerController后,照片选择器头部一片空白,且上滑相册时,信息会有错乱效果. 原因分析: 通过查 ...

  2. UIImagePicker照片选择器

    UIImagePickerController 1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType ...

  3. Android模仿iOS iMessages10照片选择器的实现

    不知不觉已经接近半年多没有写过博客了,这段时间,也是我刚好毕业走出校园的时间,由于学习工作的原因,一直没有真正静下心来写下些什么东西.这个星期刚入了小米笔记本pro的坑,本着新电脑新生活的理念嘻嘻-- ...

  4. Android 打造属于自己的照片选择器

    前言 在做第一个项目时照片选择器使用了开源的PhotoPicker 渐渐无法满足需求,就想着打造一款属于自己的照片选择器. 花了一周的时间完成了该项目,其实代码有一大半并非自己写的,在阅读PhotoP ...

  5. iOS 模仿微信的照片选择器

    功能和微信的基本一致. 这个选择器使用了循环方式,保证在浏览图片时内存中只加载最多3张图片.稳定的内存大小,可定义图片尺寸.详细说明在github. 下载地址: https://github.com/ ...

  6. Android:抄QQ照片选择器(按相册类别显示,加入选择题)

    这个例子的目的是为了实现类似至QQ照片选择功能.选择照片后,,使用类似新浪微博 微博 页面上显示. 先上效果图:     本例中使用的主要技术: 1.使用ContentProvider读取SD卡全部图 ...

  7. 利用Photos 框架搭建美图秀秀相册选择器

    简介:Photos框架是iOS8.0后推出的一个新的用于对系统相册进行相关操作的,在iOS8.0之前,开发中只能使用AssetsLibrary框架来访问移动设备的图片库.本文中不再对AssetsLib ...

  8. 仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适配了iOS6-9系统,3行代码即可集成.

    提示:如果你发现了Bug,请尝试更新到最新版.目前最新版是1.6.4,此前的版本或多或少存在一些bug的~如果你已经是最新版了,请留一条评论,我看到了会尽快处理和修复哈~ 关于升级iOS10和Xcdo ...

  9. Windows Phone 选择器

    using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; using System; using System.Windows; nam ...

随机推荐

  1. SqlServer 数据去重

    找出所有不重复的数据 SELECT [Id] ,[Name] ,[Mobile] ,[City] ,[Counter] ,[utm_source] ,[utm_medium] ,[utm_campai ...

  2. adb shell dumpsys 命令

    Android开发中,常常可以用adb shell dumpsys这条命令来dump出系统运行时的状态信息,例如可以这样来察看某个应用的内存使用信息 adb shell dumpsys meminfo ...

  3. [IR] Suffix Trees and Suffix Arrays

    前缀树 匹配前缀字符串是不言自明的道理. 1. 字符串的快速检索 2. 最长公共前缀(LCP) 等等 树的压缩 后缀树 Let s=abab, a suffix tree of s is a comp ...

  4. 【SQLSERVER】How to check current pool size

    SELECT des.program_name , des.login_name , des.host_name , COUNT(des.session_id) [Connections] FROM ...

  5. NLog类库的使用探索——认识配置+实习小感悟

    1 写在前面 1.1 为什么学了软件 1.高考失败,分数不高,不能随心所欲 2.农村孩子,学点技术,将来有口饭吃 3.有科技含量,想玩电脑(那个时候是这么想的,那个时候觉得学计算机就是玩电脑) 1.2 ...

  6. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation

    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation JAXB API是java EE 的API,因此在java ...

  7. 10.10xadmin

    2018-10-10 15:11:55 这几天讲的是xadmin插件 就是把表单,数据内容封装到类里面,简化的增删改查步骤! 放上源代码: app01/xadim.py from django.con ...

  8. 6.24 html书城Demo

    <!DOCTYPE html> <!-- 睡觉,2018-6-24 22:04:36 还有foot没弄好明天弄--> <html> <head> < ...

  9. Echarts Map 值域为小数的原因

    最近做一个项目用到了Echarts Map不知道怎么回事,有时多了一位小时,可这个意义不用小数表示(1.0个人似乎觉得有点奇怪嘞 {boolean}calculable false 是否启用值域漫游, ...

  10. [No0000CF]想有一辈子花不完的钱?从了解“被动收入”开始吧

    我想从理清自己所说被动收入的含义,开始创作此被动收入系列文章. 我更喜欢把被动收入较宽泛地定义为,甚至当你没有主动工作时,仍可赚取的收益.被动收入的另一个名称是剩余收入. 相比之下,当你停止工作时,通 ...