zoukankan      html  css  js  c++  java
  • 放大图片

    图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现

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

    #import 
    
    @interface SJAvatarBrowser : NSObject
    /**
     *	@brief	浏览头像
     *
     *	@param 	oldImageView 	头像所在的imageView
     */
    +(void)showImage:(UIImageView*)avatarImageView;
    
    @end

    以下为.m文件

    #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手势

    UITapGestureRecognizer *tap  = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(magnifyImage)];
    
        [self.imageView addGestureRecognizer:tap];
    - (void)magnifyImage
    {
        NSLog(@"局部放大");
        [SJAvatarBrowser showImage:self.imageView];//调用方法
    }

    转载请声明源地址http://blog.csdn.net/u013082522/article/details/18445901

  • 相关阅读:
    PythonのTkinter基本原理
    使用 Word (VBA) 分割长图到多页
    如何使用 Shebang Line (Python 虚拟环境)
    将常用的 VBScript 脚本放到任务栏 (Pin VBScript to Taskbar)
    关于 VBScript 中的 CreateObject
    Windows Scripting Host (WSH) 是什么?
    Component Object Model (COM) 是什么?
    IOS 打开中文 html 文件,显示乱码的问题
    科技发展时间线(Technology Timeline)
    列置换密码
  • 原文地址:https://www.cnblogs.com/jx66/p/5253953.html
Copyright © 2011-2022 走看看