文档章节

高仿QQ、微信用户图像处理

iOS赵师顺
 iOS赵师顺
发布于 2016/06/26 21:40
字数 413
阅读 6
收藏 0

// .h文件

 

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

 

@interface ImageDandleTool : NSObject

// 获取控件的坐标,传入用户图片

-(void)fullScreenWithUIView:(UIView *)view Image:(UIImage *)UserImage;

@end

 

// .m

#import "ImageDandleTool.h"

 

@interface ImageDandleTool ()<UIScrollViewDelegate>

 

@end

static CGRect oldFrame;

@implementation ImageDandleTool

 

-(void)fullScreenWithUIView:(UIView *)view Image:(UIImage *)UserImage{

    UIImage *image = UserImage;

    UIWindow *window = [UIApplication sharedApplication].keyWindow;

    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];

    scrollView.maximumZoomScale = 1.5;

    scrollView.minimumZoomScale = 1.0;

    scrollView.bounces = NO;

    scrollView.delegate = self;

//    坐标系的转化,将控件的坐标转换成目标视图中的坐标;

    oldFrame = [view convertRect:view.bounds toView:window];

    scrollView.backgroundColor = [UIColor blackColor];

    scrollView.alpha = 0;

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

    imageView.image = image;

    imageView.tag = 1;

    [scrollView addSubview:imageView];

    [window addSubview:scrollView];

    //    添加点击手势;

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

    [scrollView 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);

        scrollView.alpha=1;

    }

                     completion:^(BOOL finished) {

                     }];

    //    添加双击的手势;

    UITapGestureRecognizer *tapTwo = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapTwoAction:)];

    tapTwo.numberOfTapsRequired = 2;

    [scrollView addGestureRecognizer:tapTwo];

    //    当双击手势和单击手势共存的时候,只有没有检测到双击手势的时候,单击才有效;

    [tap requireGestureRecognizerToFail:tapTwo];

}

//双击手势触发的方法;

-(void)tapTwoAction:(UITapGestureRecognizer *)sender{

    UIScrollView *scrollView = (UIScrollView *)sender.view;

    if (scrollView.zoomScale <= 1.0) {

        [UIView animateWithDuration:0.3 animations:^{

            scrollView.zoomScale = 1.5;

        }];

    }else{

        [UIView animateWithDuration:0.3 animations:^{

            scrollView.zoomScale = 1.0;

        }];

    }

}

// 点击退回原来的图片;

-(void)fullScreenTapGR:(UITapGestureRecognizer*)tap{

    UIScrollView *backgroundView = (UIScrollView *)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];

                     }];

}

//返回要缩放的控件;

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

    return [scrollView viewWithTag:1];

}

//只要进行缩放,就会执行的该方法,使图片居中;

-(void)scrollViewDidZoom:(UIScrollView *)scrollView{

    CGPoint cender = scrollView.center;

    if (scrollView.zoomScale >1) {

        cender.x = [UIScreen mainScreen].bounds.size.width/2 +((scrollView.zoomScale - 1) * [UIScreen mainScreen].bounds.size.width/2);

        cender.y = [UIScreen mainScreen].bounds.size.height/2;

    }

    [scrollView viewWithTag:1].center = cender;

}

 

© 著作权归作者所有

共有 人打赏支持
iOS赵师顺
粉丝 3
博文 74
码字总数 36150
作品 0
昌平
程序员
私信 提问
图片处理工具

Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相册裁剪功能 使用 photoView 实现可点击放大到全屏显示的控件,效果类似于微信朋友圈点开看大图 使用 photoV...

掘金官方
2017/12/11
0
0
Chromebook将很快能够运行Linux应用 Pixelbook抢鲜

在 I/O 2018 开发者大会首日,谷歌宣布了让 Chromebook 用户欣喜的一件事,因为 Pixelbook 将很快能够运行 Linux 应用。其实早在上周的时候,大家就已经发现,在运行 Chrome OS 和 Android ...

稿源:
05/09
0
0
NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦

高仿网易严选的微信小程序商城(微信小程序客户端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 服务端api基于Node.js+ThinkJS+MySQL 计划添加基于Vue.js的后台管...

ch10mmt
2017/07/14
0
0
用责任链模式实现图像处理方法的选择(python)

结合我们822实验室开源的图像处理平台(http://822lab.top)介绍用责任链模式实现图像处理方法的选择(python),供后续学弟学妹参考,整个平台的从零搭建记录在这里,后端仓库在这里,前端仓...

刘开心_8a6c
11/26
0
0
众神互娱棋牌游戏大厅房卡专售

  H5棋牌游戏在推出不到半年的时间迅速引爆市场,其中以联合五神兽:联合大厅、青龙大厅、白虎大厅、朱雀大厅、玄武大厅、麒麟大厅、长虹互娱、六六大厅为代表的H5棋牌游戏已经深受用户喜爱...

H5棋牌游戏开发
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mgo初步接触

Intro mgo是mongodb的go语言绑定,第一次在静态类型语言中使用ORM,故留个笔记。 模型 mongodb是schema-less无模式的NoSQL非关系型数据库,理论上来说,在同一个表(mongodb中称为collectio...

御坂网络路由器
17分钟前
3
0
不要忽略异常(65)

请不要忽略异常, 尤其在api方法声明将会抛出的异常,这是定义者在试图说明某种问题 空的catch 块起到忽略异常的作用 对空的catch 块保持警惕,不应该出现 至少也要写明忽略该异常的原因 有一...

Java搬砖工程师
18分钟前
1
0
网站漏洞检测工具对discuzX3.2 X3.4网站漏洞修复

2018年12月9日,国内某安全组织,对discuz X3.2 X3.4版本的漏洞进行了公开,这次漏洞影响范围较大,具体漏洞是discuz 的用户前段SQL注入与请求伪造漏洞,也俗称SSRF漏洞,漏洞产生的原因首先...

网站安全
18分钟前
2
0
2018开发人员路线图

chinahufei
21分钟前
3
0
领哥,项目管理

领哥 https://www.leangoo.com/kanban/board_list

miaojiangmin
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部