UIImageView01

//
//  ViewController.m
//  UIImageView01
//
//  Created by cqy on 16/2/13.
//  Copyright © 2016年 程清杨. All rights reserved.
//

#import "ViewController.h"

@interface ViewController (){
    UIImageView *img;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //创建UIImageView
    //通过图⽚名来初始化⼀个UIImageView类。
    img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"cat01"]];
    img.frame = CGRectMake(120, 220, 200, 300);
    [self.view addSubview:img];
    //注意:ImageView的默认是NO,是关闭交互。要将userInteractionEnabled(响应者链是否交互)设置为YES
    img.userInteractionEnabled = YES;
    //添加手势
    //轻拍⼿势:
    //创建轻拍手势识别器
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
      [self->img addGestureRecognizer:tap];
    // ⻓按⼿势
    UILongPressGestureRecognizer *longPress =
    [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];
    longPress.minimumPressDuration = 0.5;
    [self->img addGestureRecognizer:longPress];
    //旋转⼿势
    // 旋转
    UIRotationGestureRecognizer *rotation =
    [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];
    [self->img addGestureRecognizer:rotation];
   // 捏合⼿势:
    UIPinchGestureRecognizer *pinch =
    [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];
    [self->img addGestureRecognizer:pinch];
   // 平移⼿势:
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
    [self->img addGestureRecognizer:pan];
    //轻扫
   
   
    // Do any additional setup after loading the view, typically from a nib.
}
// 轻拍⼿势响应⽅法
- (void)tapAction:(UITapGestureRecognizer *)sender{
    NSLog(@"我是轻拍⼿势..");
    // 换图⽚
    // 获取⼿势图⽚
    UIImageView *temp = (UIImageView *)sender.view;
    temp.image = [UIImage imageNamed:@"cat02"];
}
// ⻓按响应⽅法
- (void)longPressAction:(UILongPressGestureRecognizer *)sender{
    NSLog(@"⻓按⼿势");
   
    if (sender.state == UIGestureRecognizerStateBegan) {
        NSLog(@"⻓按开始..");
        [UIView animateWithDuration:1 animations:^{
            // 修改view的frame
            CGRect temp1 = sender.view.frame;
            temp1.size.width +=50;
            temp1.size.height +=50;
            // 修改完成附回
            sender.view.frame = temp1;
            sender.view.alpha = 0.4;
        }];
    }else if (sender.state == UIGestureRecognizerStateEnded){
        NSLog(@"⻓按结束..");
        [UIView animateWithDuration:1 animations:^{
            // 修改view的frame
            CGRect temp1 = sender.view.frame;
            temp1.size.width -=50;
            temp1.size.height -=50;
            // 修改完成附回
            sender.view.frame = temp1;
            sender.view.alpha = 1;
        }];
    } 
}
// 旋转⼿势响应⽅法
- (void)rotationAction:(UIRotationGestureRecognizer *)sender{
    NSLog(@"我是旋转⼿势..");
    sender.view.transform =
    CGAffineTransformRotate(sender.view.transform,
                            sender.rotation);
    sender.rotation = 0;
}
// 捏合⼿势响应⽅法
- (void)pinchAction:(UIPinchGestureRecognizer *)sender{
    NSLog(@"我是捏合⼿势");
    sender.view.transform =
    CGAffineTransformScale(sender.view.transform, sender.scale,
                           sender.scale);
    sender.scale = 1;
}
// 平移⼿势响应⽅法
- (void)panAction:(UIPanGestureRecognizer *)sender{
    NSLog(@"我是平移⼿势..");
    CGPoint point = [sender translationInView:sender.view];
    sender.view.transform =
    CGAffineTransformTranslate(sender.view.transform, point.x,
                               point.y);
    // 将偏移量归零
    [sender setTranslation:CGPointZero inView:sender.view];
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

转载于:https://www.cnblogs.com/iQingYang/p/5193195.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android系统耗电量大待机,安卓手机耗电快有什么解决办法吗 安卓手机待机耗电量大怎么办...

虽然手机发展速度越来越快,技术也越来越高了,电池容量相对之前的900毫安1000毫安,都上升到了2000毫安到5000毫安,但是感觉待机的时间和正常的使用时间,却没有之前那么长了,难道手机电池容量是假的&#xff…

js 中null,undefined区别

首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。 有点奇怪的是,JavaScript语…

集合中的遍历以及删除元素

package collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;/*** 遍历集合元素* Collection提供了统一的变量集合元素的方式;迭代器* 方法为:* Iterator iterator()* 该方法可以获…

Linux 关机命令详解 转自脚本之家

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的。 Linux centos重启命令: 1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过…

六款值得推荐的Android开源框架简介

六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的、不错的就够了。下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的。 1、volley 项目地址 https://github.com/smanikandan14/Volley-demo JSON,图像等的…

android应用程序的组件,Android基础之应用程序组件

Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务(Service),广播接收者(Broadcast Receiver)…

数据库杂谈(一)——数据库基本概念

文章目录1 数据库基本概念1.1数据库和数据库管理系统1.2 数据库系统和文件系统1.3 数据模型1.4 数据库三级模式和两级独立性1.4.1 三级模式1.4.2 二级映像功能1.4.3 数据独立性1.5 数据库发展历史及分类1.6 数据库系统的组成和生命周期1.6.1 三个概念1.6.2 生命周期1.6.3 存储管…

【转】Java删除文件夹和文件

原文网址:http://kxjhlele.iteye.com/blog/323657 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1&#xff0c…

webapi返回字符串,解决自动加双引号或下划线的问题

返回类型改为HttpResponseMessage类型 [HttpGet] public HttpResponseMessage Test() {HttpResponseMessage responseMessage new HttpResponseMessage { Content new StringContent("你要返回的字符串", Encoding.GetEncoding("UTF-8"), "text/pla…

数据库杂谈(二)——数据模型

2 数据模型 摘要:数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是…

android编译系统apk文件,VS2012中MonoForAndroid打包编译APK文件详细图文教程

本文用于介绍Visual Studio 2012中Xamarin Mono For Android 如何打包编译APK文件,从如何创建Android项目,到如何启动调试,都会逐个配图讲解。1 新建项目2 选择安卓3 选择安卓程序4 随便取名和设置存放路径5 确定1 创建完一个新的项目2 点击“…

判断程序是否已经运行

近段时间,需要写一个小功能,就是需要判断程序是否已经运行。某个程序安装后,也许被多个用户运行。那怎样判断当前用户已经运行了此程序了呢?下面是Insus.NET的做法,就是:《VB.NET WinForm获取运行程序用户名…

hyper虚拟机下对centos进行动态扩容

在关机状态下,可增加centos的磁盘空间,但是增加的这部分空间,还需在centos完成以下操作,才能使用1.查看现有的硬盘分区(现在空间没有变大)#df -h2.对新增的硬盘空间做新增分区(硬盘数没有增加&a…

浅谈缓存技术在ASP.NET中的运用

本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可&#…

Git快速入门+复习笔记

对于学习编程的同志来说,学习Git是必不可少的一项技术,如果你是第一次观看我的文章,欢迎关注我的频道,我会分享更多有趣的知识。 文章目录1 目标2 概述2.1 开发中的实际场景2.2 版本控制器的方式2.3 工作流程图3 Git安装和常用命令…

android程序名称,Android应用程序名称带上标

您需要使用ISO-8859-1 / UTF-8字符来完成插入(在您的情况下)上标3.清单HTML ISO-8859-1 Reference个实体.例如在AndroidManifest.xml中android:hardwareAccelerated"true"android:icon"drawable/ic_launcher"android:label"Myapp" 或者使用HTML实…

阿里云部署Docker(5)----管理和公布您的镜像

出到这节,我在百度搜索了一下“阿里云部署Docker”,突然发现怎么会有人跟我写的一样呢?哦,原来是其它博客系统的爬虫来抓取,然后也不会写转载自什么什么的。所以,我最终明确为什么那些大咖的文章总会在文章…

spring security method security

spring security method security 参考 Spring Security 官方文档 http://www.concretepage.com/spring/spring-security/preauthorize-postauthorize-in-spring-security 方法调用安全 对应的注解EnableGlobalMethodSecurity,该注解放在GlobalMethodSecurityConfiguration的子…

Android浏览器速度测试,Android平台浏览器网页加载速度对比评测

参与测试的浏览器手机上网已经渐渐成为人们的一种习惯,无论在等公交时、乘地铁时、吃饭等餐时,很多朋友都习惯掏出手机简单浏览一下微博、人人、新闻网站等页面。移动网络的确为我们带来了莫大的便利,但网速和稳定性却是移动网络的硬伤。针对…

操作系统随笔(一)

你好朋友,当你点进来这份读书笔记时,我相信你不是无意中点进来就是对这一部分饶有兴趣,可惜的是,我也只是个普通的大学生,有时候对知识的见解获取没有屏幕前的你那么有天赋,所以在阅读完这篇文章的同时点个…