iOS学习必须了解的七大手势

文章只要你有一点点基础应该就可以看的懂,文章只为学习交流

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,retain)UIImageView *imageView;
@property (nonatomic,assign)NSInteger index;//下标
@property (nonatomic,retain)NSMutableArray *images;//图片名    字数组

@end

@implementation ViewController
#加载视图

-(void)viewDidLoad
{

[super viewDidLoad];
//布局imageView
[self layoutImageView];
//1.创建轻拍手势
[self tapGestureRecognizer];
//2.创建清扫手势
[self swipeGestureRecognizer];
//3.创建长安手势
[self longPressGestureRecognizer];
//4.创建平移手势
[self panGestureTecognizer];
//5.创建捏合手势
[self pinchGestureRecognizer];
//6.创建 旋转手势
[self rotationGestureRecognizer]
//7.创建边缘手势
[self screenEdgePanGestureRecognizer];

}

##布局ImageView

-(void)layoutImageView
{

//创建对象
UIImageView *imageView =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 375, 667)];
//配置属性
imageView.backgroundColor =[UIColor purpleColor];
//设置图片
imageView.image =[UIImage imageNamed:@"car1.jpg"];
//添加父视图
[self.view addSubview:imageView];
//将创建的图片视图对象 给属性赋值
self.imageView =imageView;
//打开用户交互
self.imageView.userInteractionEnabled =YES;
self.images =[NSMutableArray array];
for (int i = 1; i<9; i++) {
    NSString * imageName =[NSString stringWithFormat:@"car%d.jpg",i];
    [_images addObject:imageName];
}
// _index =1;

}

#pragma 轻怕手势
//创建轻拍手势
-(void)tapGestureRecognizer
{

//创建手势对象
UITapGestureRecognizer *tap =[[UITapGestureRecognizer alloc]initWithTarget:self     action:@selector(tapAction:)];
//配置属性
//轻拍次数
tap.numberOfTapsRequired =1;
//轻拍手指个数
tap.numberOfTouchesRequired =1;
//讲手势添加到指定的视图上
[_imageView addGestureRecognizer:tap];

}

//轻拍事件

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

//图片切换
NSLog(@"拍一下");
_index ++;
if (_index == 8) {
    _index = 1;
}
self.imageView.image =[UIImage imageNamed:_images[_index]];

}
#pragma 清扫手势

//清扫手势
-(void)swipeGestureRecognizer
{

UISwipeGestureRecognizer *swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
//配置属性
//一个清扫手势  只能有两个方向(上和下) 或者 (左或右)
//如果想支持上下左右清扫  那么一个手势不能实现  需要创建两个手势
swipe.direction =UISwipeGestureRecognizerDirectionLeft;
//添加到指定视图
[_imageView addGestureRecognizer:swipe];
UISwipeGestureRecognizer *swipe2 =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
swipe2.direction =UISwipeGestureRecognizerDirectionRight;
[_imageView addGestureRecognizer:swipe2];

}
//清扫事件
-(void)swipeAction:(UISwipeGestureRecognizer *)swipe
{

NSLog(@"扫一下");
if (swipe.direction ==UISwipeGestureRecognizerDirectionRight)       {
    NSLog(@"右清扫");
    _index --;
    if (_index < 1) {
        _index =7;
    }
    _imageView.image =[UIImage imageNamed:_images[_index]];
}else if(swipe.direction == UISwipeGestureRecognizerDirectionLeft){
    NSLog(@"左扫一下");
    _index ++;
    if (_index == 8) {
        _index=1;
    }
    _imageView.image =[UIImage imageNamed:_images[_index]];
}

}
#pragma 长按手势
//创建长按手势
-(void)longPressGestureRecognizer
{

UILongPressGestureRecognizer *longPress =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];
//最短长按时间
longPress.minimumPressDuration =2;
//允许移动最大距离
longPress.allowableMovement =1;
//添加到指定视图
[_imageView addGestureRecognizer:longPress];

}
//长按事件
-(void)longPressAction:(UILongPressGestureRecognizer *)longPress
{

//NSLog(@"长按");
//对于长安有开始和 结束状态
if (longPress.state == UIGestureRecognizerStateBegan) {
    NSLog(@"长按开始");
    //将图片保存到相册
    UIImage *image =[UIImage imageNamed:_images[_index]];
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}else if (longPress.state == UIGestureRecognizerStateEnded)
{
    NSLog(@"长按结束");
}

}

#pragma 平移手势
//创建平移手势
-(void)panGestureTecognizer
{

UIPanGestureRecognizer *pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
//添加到指定视图
[_imageView addGestureRecognizer:pan];

}
//创建平移事件
-(void)panAction:(UIPanGestureRecognizer *)pan
{

//获取手势的位置
CGPoint position =[pan translationInView:_imageView];

//通过stransform 进行平移交换
_imageView.transform = CGAffineTransformTranslate(_imageView.transform, position.x, position.y);
//将增量置为零
[pan setTranslation:CGPointZero inView:_imageView];

}

#pragma 捏合手势
-(void)pinchGestureRecognizer
{

UIPinchGestureRecognizer *pinch =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];
//添加到指定视图
[_imageView addGestureRecognizer:pinch];

}
//添加捏合事件
-(void)pinchAction:(UIPinchGestureRecognizer *)pinch
{

//通过 transform(改变) 进行视图的视图的捏合
_imageView.transform =CGAffineTransformScale(_imageView.transform, pinch.scale, pinch.scale);
//设置比例 为 1
pinch.scale = 1;

}
#pragma 旋转手势

//创建旋转手势
-(void)rotationGestureRecognizer
{

UIRotationGestureRecognizer *rotation =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];
//添加到指定的视图
[_imageView addGestureRecognizer:rotation];

}
//旋转事件

-(void)rotationAction:(UIRotationGestureRecognizer *)rote
{

//通过transform 进行旋转变换
_imageView.transform = CGAffineTransformRotate(_imageView.transform, rote.rotation);
//将旋转角度 置为 0
rote.rotation = 0;

}
#pragma 边缘手势

//创建边缘手势
-(void)screenEdgePanGestureRecognizer
{

UIScreenEdgePanGestureRecognizer *screenPan = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenPanAction:)];
[_imageView addGestureRecognizer:screenPan];

}
//创建边缘事件
-(void)screenPanAction:(UIScreenEdgePanGestureRecognizer *)screenPan
{

NSLog(@"边缘");

}

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

@end
时间: 2024-11-23 07:18:02

iOS学习必须了解的七大手势的相关文章

iOS学习笔记——触控与手势

触控 此部分内容已学良久,恨记之甚晚,忙矣,懒矣!本文简而记焉,恐日后忘也. 在iOS的触控事件中,有触控.事件以及响应者这三个角色,一个触摸则代表了一只手指和屏幕接触这个动作所包含的信息:而事件则包含了若干只手指在整个屏幕触控中整个过程的所有触摸信息,在C#的角度来说很容易会让人误以为是一种方法(或者叫函数)的指针:实际却不然,在这里无论触控和事件都是用于一些存储信息.而响应者则是确确实实的可以对真正的触控事件作相应处理:这三个角色在OC中分别对应着UITouch,UIEvent和UIResp

蓝懿IOS学习七大手势Touches

今天学习了ios编程里手势的方法及应用场景,屏幕页面中区分很多控件,有的控件可以有点击事件和用户直接交互,可以执行相应方法,如TextField,Button,UISEgmentControll等,但是静态lableUIImageView等就需要把交互开关打开,添加响应的手势才能实现交互. 刘国斌老师详细的对我们讲了七大手势,包括点击Touches,UIPanGestureRecognizer拖动,UILongPressGestureRecognizer长按手势,UIScreenEdgePanG

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

iOS学习笔记(2)— UIView用户事件响应

iOS学习笔记(2)— UIView用户事件响应 UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除.也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件. multipleTouchEnabled  默认是NO,如果设置为YE

我的IOS学习资源收录

IOS7视频教程-storyboard与UIApplication http://v.youku.com/v_show/id_XNzMxMjgwNzEy.html 关东升老师的ios视频教程 iPhone与iPad开发实战-ios经典应用剖析-7大项目实战开发 1第1讲工具类应用密码生成(Amuck Password Generator)57分钟   2第2讲工具类应用密码生成(Amuck Password Generator)52分钟   3第3讲工具类应用--密码生成(Amuck Passw

iOS学习笔记-精华整理

iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁. 2-成员属性:     readonly:不指定readonly,默认合成getter和setter方法.外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).

ios学习-delegate、传值、跳转页面

ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选择保存路径即可. 3.创建文件夹Model.Controller. 4.Model文件夹创建User类:User.h User.m 代码: User.h: [html] view plaincopy #import <Foundation/Foundation.h> @interface User : N