您的位置:首页 > 移动开发 > IOS开发

ios开发图片点击放大

2016-06-20 15:49 471 查看
图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现

创建了一个专门用于放大图片的类,以下为.h文件

[objc] view plain copy







#import <Foundation/Foundation.h>

@interface SJAvatarBrowser : NSObject

/**

* @brief 浏览头像

*

* @param oldImageView 头像所在的imageView

*/

+(void)showImage:(UIImageView*)avatarImageView;

@end

以下为.m文件

[objc] view plain copy







#import "SJAvatarBrowser.h"

static CGRect oldframe;

@implementation SJAvatarBrowser

+(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.3 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.3 animations:^{

imageView.frame=oldframe;

backgroundView.alpha=0;

} completion:^(BOOL finished) {

[backgroundView removeFromSuperview];

}];

}

@end

引入此类之后,为自己需要放大的imageView添加tap手势

[objc] view plain copy







UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(magnifyImage)];

[self.imageView addGestureRecognizer:tap];

[objc] view plain copy







- (void)magnifyImage

{

NSLog(@"局部放大");

[SJAvatarBrowser showImage:self.imageView];//调用方法

}

转载请声明源地址http://blog.csdn.net/u013082522/article/details/18445901
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: