zoukankan      html  css  js  c++  java
  • OC照片选择器MJPhotoBrowser

    图片选择器,看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
    
  • 相关阅读:
    VS2005环境下的DLL应用
    Windows Xp下BMP位图转JPEG格式
    [转]C# 中使用委托对List<>进行排序和筛选
    [转]DRP系统知识点总结
    [转]计算机是如何启动的
    [转]JSP基础知识
    [转] 视觉直观感受若干常用排序算法
    [转]使用余弦定理计算两篇文章的相似性
    [转] 关于幂律分布的一个笔记
    [转]函数式编程(泛函编程模型)初探
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/10135972.html
Copyright © 2011-2022 走看看