文档章节

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

iOS赵师顺
 iOS赵师顺
发布于 2016/06/26 21:40
字数 413
阅读 6
收藏 0
点赞 0
评论 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
博文 73
码字总数 35628
作品 0
昌平
程序员
图片处理工具

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

掘金官方 ⋅ 2017/12/11 ⋅ 0

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

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

ch10mmt ⋅ 2017/07/14 ⋅ 0

众神互娱棋牌游戏大厅房卡专售

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

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

【转】高仿腾讯QQ终结版,超6

Tag: 项目介绍: 之前写过一篇关于高仿腾讯QQ的博客,不知道的看这:http://blog.csdn.net/htq/article/details/51840273 主要是从界面上高仿了腾讯QQ,在UI上基本上与腾讯QQ一模一样,但是...

2013020735 ⋅ 2016/11/16 ⋅ 0

Android 自定义控件打造史上最简单的侧滑菜单

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39185641 ,本文出自【张鸿洋的博客】 侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样 对于侧滑菜单,一般大...

lmj623565791 ⋅ 2014/09/11 ⋅ 0

关于微信的那点帖。。。。。。(各种实例)

照惯例发帖先吐槽一下:最近看到大家发防微信功能特别的多,所以就汇总了一下,看看大家还有什么其他方面的汇总需求,回复我噢,均可满足。。。。。 (ps:有些帖子由于主观、客观还有神马原因...

程序袁_绪龙 ⋅ 2015/04/01 ⋅ 0

项目整理收集二

小编收集整理的项目都是经过小编本人亲自运行测试(有的项目bug之多,谁改谁知道,但是在小编的修改下都是可以运行的,💪💪)。收集整理的项目既有他人项目也有小编自写的项目,只是用来...

摸着石头过河_崖边树 ⋅ 2017/05/22 ⋅ 0

项目整理收集三

经过前两期的项目收集整体,我得到了许多同行朋友的支持和鼓励,使我更加觉得这种项目分享是有意义的,既然大家对我这么大的支持,那么小编怎么可以辜负大家对我的期望呢。废话少说,直接分享...

摸着石头过河_崖边树 ⋅ 2017/05/22 ⋅ 0

Android 高仿微信头像截取 打造不一样的自定义控件

转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/39761281,本文出自:【张鸿洋的博客】 1、概述 前面已经写了关于检测手势识别的文章,如果不了解可以参考:Android 手...

lmj623565791 ⋅ 2014/10/10 ⋅ 0

tumobi/nideshop

NideShop商城(服务端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易严选商城 功能和数据库参考ecshop 服务端api基于Node.js+ThinkJS+MySQL 计划添加基于Vue.js的后台管理...

tumobi ⋅ 2017/07/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 46分钟前 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

前言 我是上学期学的汇编,因为有vs又不想用课上教的麻烦的dosbox以及masm32,但是一直没找到高亮插件和能调试的(难在运行不了而找不到答案上,出现的错误在最后放出,还请先达们不吝指点)...

simpower ⋅ 56分钟前 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 59分钟前 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 今天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 今天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 今天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 今天 ⋅ 0

Java对象的序列化与反序列化

Java对象的序列化与反序列化

Cobbage ⋅ 今天 ⋅ 0

Sqoop

1.Sqoop: 《=》 SQL to Hadoop 背景 1)场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据分析呢? 1) RDBMS ==> Hadoop(广义) 2) Hadoop ==> RDBMS 2)原来可以通过MapReduce I...

GordonNemo ⋅ 今天 ⋅ 0

全量构建和增量构建的区别

1.全量构建每次更新时都需要更新整个数据集,增量构建只对需要更新的时间范围进行更新,所以计算量会较小。 2.全量构建查询时不需要合并不同Segment,增量构建查询时需要合并不同Segment的结...

无精疯 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部