原本写的是一个单独是类,现在直接写到UIimageView分类中
类名: UiimageView+AvatarBrowser
这里有个注意的地方,有些童鞋可能用的时候会说怎么单击图片没有用,你需要设置图片可与用户交互.默认UiimageView是不接受响应事件的,尽管你分类中添加了点击手势
记得写这个 self.imageView.userInteractionEnabled = YES;
.h文件
@interface
void)showMagnify;
@end
.m文件
#import "UIImageView+AvatarBrowser.h"
static CGRect
#define KScreenH [UIScreen mainScreen].bounds.size.height
#define KScreenW [UIScreen mainScreen].bounds.size.width
@implementation
void)showMagnify;
{
//获取图片
UIImage *image = self.image;
//获取程序的主窗口
UIWindow *window = [UIApplication sharedApplication].keyWindow;
//背景的View
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
//记住图片原本的位置
oldframe = [self convertRect:self.bounds toView:window];
//设置背景颜色
backgroundColor = [UIColor blackColor];
//透明度为0
alpha = 0;
//创建一个imageView,把图片的原来的位置和图片都放进去
UIImageView *imageView = [[UIImageView alloc] initWithFrame:oldframe];
image
//设置tag值
tag = 1;
//添加到背景的View中
addSubview:imageView];
//把背景的View添加到window(根窗口)
addSubview:backgroundView];
//创建手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideImage:)];
//添加到背景的View
addGestureRecognizer:tap];
[UIView animateWithDuration:0.3 animations:^{
//这是等比例放大
frame = CGRectMake(0, (KScreenH - image.size.height * KScreenW/image.size.width)/2, KScreenW, image.size.height * KScreenW / image.size.width);
//使其看得见
alpha = 1;
}];
}
- (void)hideImage:(UITapGestureRecognizer *)tap
{
//获取背景的View
UIView *backgroundView = tap.view;
//通过tag的值获取imageView
UIImageView *imageView = (UIImageView *)[tap.view viewWithTag:1];
[UIView animateWithDuration:0.3 animations:^{
//设置其原来的高度
frame = oldframe;
alpha = 0;
completion:^(BOOL
//从窗口移除
removeFromSuperview];
}];
}
@end
为了防止拷贝,原本准备说用图片的,可是截图软件不给力,现在直接上代码