iOS点击图片全屏放大效果

//
//  EBImageBrowser.h
//  EBImageBrowser
//
//  Created by yaoliangjun on 16/4/19.
//  Copyright © 2016年 yaoliangjun. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface EBImageBrowser : NSObject

/**
 *  @brief  点击图片变成大图
 *
 *  @param  oldImageView    图片所在的imageView
 */
+ (void)showImage:(UIImageView *)avatarImageView;

@end
//
//  EBImageBrowser.m
//  EBImageBrowser
//
//  Created by yaoliangjun on 16/4/19.
//  Copyright © 2016年 yaoliangjun. All rights reserved.
//

#import "EBImageBrowser.h"

@implementation EBImageBrowser

static CGRect oldframe;

+ (void)showImage:(UIImageView *)avatarImageView{
    UIImage *image = avatarImageView.image;
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    UIView *backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    oldframe = [avatarImageView convertRect:avatarImageView.bounds toView:window];
    backgroundView.backgroundColor = [UIColor blackColor];
    backgroundView.alpha = 0;
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:oldframe];
    imageView.image = image;
    imageView.tag = 1;
    [backgroundView addSubview:imageView];
    [window addSubview:backgroundView];
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideImage:)];
    [backgroundView addGestureRecognizer: tap];
    
    [UIView animateWithDuration:0.2 animations:^{
        imageView.frame = CGRectMake(0,([UIScreen mainScreen].bounds.size.height - image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width) / 2, [UIScreen mainScreen].bounds.size.width, image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width);
        backgroundView.alpha = 1;
    } completion:^(BOOL finished) {
        
    }];
}

+ (void)hideImage:(UITapGestureRecognizer *)tap{
    UIView *backgroundView = tap.view;
    UIImageView *imageView=(UIImageView *)[tap.view viewWithTag:1];
    [UIView animateWithDuration:0.2 animations:^{
        imageView.frame = oldframe;
        backgroundView.alpha = 0;
    } completion:^(BOOL finished) {
        [backgroundView removeFromSuperview];
    }];
}

@end

//
//  ViewController.m
//  ImageTest
//
//  Created by yaoliangjun on 16/4/19.
//  Copyright © 2016年 yaoliangjun. All rights reserved.
//

#import "ViewController.h"
#import "EBImageBrowser.h"

@interface ViewController ()

@property (nonatomic, strong) UIImageView *imageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 100, 190, 190)];
    imageView.userInteractionEnabled = YES;
    imageView.image = [UIImage imageNamed:@"chat_location_preview"];
    _imageView = imageView;
    [self.view addSubview:imageView];
    
    UITapGestureRecognizer *tap  = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(magnifyImage)];
    [imageView addGestureRecognizer:tap];
    
}

- (void)magnifyImage
{
    NSLog(@"局部放大");
    [EBImageBrowser showImage:_imageView];//调用方法
}
@end


你可能感兴趣的:(iOS点击图片全屏放大效果)