原本写的是一个单独是类,现在直接写到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




为了防止拷贝,原本准备说用图片的,可是截图软件不给力,现在直接上代码