您的位置:首页 > 其它

图片单击放大,再次单击缩小

2016-02-03 23:52 281 查看
原本写的是一个单独是类,现在直接写到UIimageView分类中

类名:    UiimageView+AvatarBrowser

这里有个注意的地方,有些童鞋可能用的时候会说怎么单击图片没有用,你需要设置图片可与用户交互.默认UiimageView是不接受响应事件的,尽管你分类中添加了点击手势

 
记得写这个 self.imageView.userInteractionEnabled =
YES;

.h文件

@interface UIImageView (AvatarBrowser)

- (void)showMagnify;

@end

.m文件

#import "UIImageView+AvatarBrowser.h"

static CGRect oldframe;

#define  KScreenH  [UIScreen mainScreen].bounds.size.height

#define  KScreenW  [UIScreen mainScreen].bounds.size.width

@implementation UIImageView (AvatarBrowser)

- (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];

    //设置背景颜色

    backgroundView.backgroundColor = [UIColor
blackColor];

    //透明度为0

    backgroundView.alpha =
0;

   
//创建一个imageView,把图片的原来的位置和图片都放进去

    UIImageView *imageView = [[UIImageView
alloc] initWithFrame:oldframe];

    imageView.image = image;

    //设置tag值

    imageView.tag =
1;

    //添加到背景的View中

    [backgroundView addSubview:imageView];

    //把背景的View添加到window(根窗口)

    [window addSubview:backgroundView];

    

    //创建手势

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

    //添加到背景的View

    [backgroundView addGestureRecognizer:tap];

    

    [UIView
animateWithDuration:0.3
animations:^{

        //这是等比例放大

        imageView.frame =
CGRectMake(0, (KScreenH - image.size.height *
KScreenW/image.size.width)/2,
KScreenW, image.size.height *
KScreenW / image.size.width);

        //使其看得见

        backgroundView.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:^{

        //设置其原来的高度

        imageView.frame =
oldframe;

        backgroundView.alpha =
0;

    } completion:^(BOOL finished) {

        //从窗口移除

        [backgroundView removeFromSuperview];

    }];

}

@end

为了防止拷贝,原本准备说用图片的,可是截图软件不给力,现在直接上代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: