IOS - 七大手势操作

iOS 手势识别与操作 UIGestureRecognizer 1.UIGestureRecognizer 2.注意事项 3.TapGesture 4.PinchGesture 5.RotationGesture 仿iPhone相册图片捏合旋转 6.SwipeGesture 7.PanGesture 8.LongPressGesture 9.手势的依赖 阅读详情


#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
}



iOS 旋转手势 iOS的手势功能很强大,大家都知道。但是如何使用了? 这里 我们简单的以一个UILabel测试一下旋转 使用Xcode 创建一个工程 起名testRotation 我们在默认生成的ViewController中写代码 首先我们创建两个变量 UILabel *testLable; //label用来测试旋转 C 阅读详情

相关推荐

iOS手势识别完全实战教程

本文还有配套的精品资源,点击获取 简介:手势识别在iOS应用开发中扮演关键角色,是用户交互的基础。"iOS GestureDemo"示例项目旨在帮助开发者理解和应用各种手势识别器。该项目包含"GestureDemo.xcodeproj"工程,演示了如何在应用中集成和自定义包括轻触、滑动、拖拽、捏合、旋转和长按在内的手势识别器。项目中还可能展示了手势识别器的创建、关联、优先级...

weixin_29323977的博客 1096

iOS 七种手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)详解及实例代码

手势识别在移动端( iOS) 中非常重要,极大地提高了移动设备的使用便捷性。iOS 系统在 3.2 以后,它提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作。UIPanGestureRecognizer(拖动)UIPinchGestureRecognizer(捏合)UIRotationGestureRecognizer(旋转)UITapGestureRecognizer(点按)

主要记录一些问题处理记录,部分是作为知识库使用 3518

ios各种手势使用集合总结,适合ios新手

适合新手观看的ios demo合集,掌握每种方法即可ios入门 代码简单 适合新手

iOS 常见的六种 手势

六种手势如下: UITapGestureRecognizer [UIPinchGestureRecognizer](捏合) [UIRotationGestureRecognizer](旋转) ([UISwipeGestureRecognizer]滑动,快速移动) [UIPanGestureRecognizer](平移,慢速移动) [UILongPressGestureRecognizer](长按)...

qq_40201469的博客 1516

11k-hands-masks.7z

200张hands11k数据的mask

GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA)

前言 之前写了GD32F103调试小记(二)之USART(接收中断、接收空闲中断+DMA、发送DMA)一文。这次我们来看看GD32F303的USART是如何配置的,结合这两篇文章,相信大家GD32的USART配置流程会十分熟悉。 DMA 能大大减轻CPU负荷的东西,建议场景合适的情况下,都去用DMA功能。 USART 一种串行通信协议, ...

欢喜6666的博客 3万+

iOS——常用的手势总结

iOS——常用的手势总结 前言 我们在平时玩手机的时候都知道关于手势的重要性,在加入手势的应用时,使我们的App变得更加方便使用,那么具体iOS有几种常用的手势呢?下面我简单的总结一下那些关于iOS最常用的手势。关于手势的应用iOS提供了UIGestureRecognizer类。手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别: 使用手势的步骤 使用手势很简单,分为两步: 创建手势实例。当创建手势时,指定一个回调方法,当手势开始,改变、或

weixin_51638861的博客 3429

杰理芯片外挂Flash音乐播放功能避坑指南(附FAT文件系统配置)

本文详细解析了杰理芯片外挂Flash实现音乐播放功能的技术要点与常见问题,包括硬件连接、SPI驱动配置、FAT文件系统烧录及音乐播放集成等关键环节。特别针对Flash选型、FAT文件系统配置等易错点提供实用解决方案,帮助开发者高效完成嵌入式音频系统开发。

yhn45678901的博客 833

iOS13怎么样好用吗 iOS13系统上手深度性能评测分析

果粉们一直期待的苹果最新系统ios13终于正式发布了,全球的十亿用户终于可以用上它了,但是这个ios13系统究竟怎么样?是否好用吗?比之前的系统有什么改进?今天小编就给大家介绍下ios13系统上手性能深度评测分析,赶紧一起来看看吧。 iOS13怎么样好用吗 虽然在大体设计上,iOS 13 对比 iOS 12 没有太大的变化,但在系统功能和应用层上,苹果依然还是「以用户为本」地对它进行数十项更新。 那么在进行若干项优化后, iOS 13 的体验到底是新瓶装旧酒,还是稳扎、稳打、稳

兔子学前端 3757

PyTorch复现EEG-TCNet踩坑记:从BCI IV2a数据到TCN块缺失的完整解决方案

本文详细解析了使用PyTorch复现EEG-TCNet模型的全过程,重点解决了BCI IV2a数据集预处理和TCN模块缺失的技术难题。通过标准化数据流程、跨受试者验证策略以及三种因果卷积实现方案,为运动想象分类任务提供完整解决方案,帮助研究者高效实现模型复现与优化。

weixin_30699955的博客 319

机器学习——笔记整理(原理、python代码)——反反复复,出精活!

回顾知识,检查自我,开拓新域。 机器学习1.监督学习 机器学习简介: 机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、欺诈检测、股票交易和医疗诊断等应用。 机器学习分类: 机器学习一般分为下面几种类别 监督学习 ( Supervised Learning) 无监督学习 ( Unsupervised Learning) 强化学习(

weixin_45666566的博客 6487

ios的手势操作之UIGestureRecognizer浅析

一、概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event  -

程序人生 13万+

Allegro中调整差分对等长的步骤介绍

【代码】Allegro中调整差分对等长的步骤介绍。

qq_30882617的博客 3833

iOS——6种系统手势操作

UIGestureRecognizer(手势识别器) 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性。 iOS 系统在 3.2 以后,他提供了六种常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作。 UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer(捏合) UIRotationGestureRecognizer(旋转) UITapGestureRecognizer(点按) UILongP

LANGJ1的博客 2671

告别裸机思维:在STM32F407上玩转LwIP,让你的设备轻松接入TCP网络

本文详细介绍了如何在STM32F407微控制器上使用LwIP协议栈实现TCP网络连接,从裸机编程到网络化的架构革命。通过事件驱动模型、内存优化配置和工业级稳定性实现,帮助开发者高效构建稳定TCP连接,适用于物联网设备联网等场景。

weixin_33725515的博客 562

ESP32 开发实战:VS Code 头文件波浪线及编译错误的终极解决方案

本文针对ESP32开发者在VS Code中常见的头文件红色波浪线和fatal error编译错误,提供了终极解决方案。通过详细讲解如何配置c_cpp_properties.json文件来修复编辑器智能提示,以及如何修改CMakeLists.txt来修正编译器路径,帮助开发者彻底解决环境配置问题,提升开发效率。

prometheus9mon的博客 294

ios的手势操作之UIGestureRecognizer

一、概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

请叫我斑马先生。 698

看完这篇你就能讲解LLC软开关:一文秒懂 ZVS 和 ZCS 到底啥意思!

想要 MOS 管ZVS 好实现➜ 把工作频率保持在 fr1 或更高。想让整流二极管也ZCS 实现➜ 频率就别高过 fr1。设计磁性元件时,一定要计算好 Lr、Lm、Cr 的值,这直接决定你 fr、fr1 是多少!LLC 的软开关技术不是“魔法”,是电感电容+频率控制的精妙组合;fr1 就像黄金分割点,整流和开关都能“刚刚好”;不是所有软开关都能同时实现,要看你在频率曲线的哪一段!

weixin_43199439的博客 1539

IOS UIGestureRecognizer 手势

文章目录概要介绍UIGestureRecognizer创建方法UIGestureRecognizer类常用属性以及方法 概要介绍 iOS 一共提供了6种类型的手势操作,分别为:点击,捏合,旋转,滑动,长按,手势需要添加到UIView控件及其子控件之上,同时每个UIView可以添加多个手势。 UIGestureRecognizer类是一个抽象类,不能直接使用。具体使用过程中需要使用其子类,UIGes...

煮酒Shae 900

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

iOS中的手势操作

目录:六种手势 轻击手势(TapGestureRecognizer) 拖动手势(PanGestureRecognizer) 轻扫手势 (SwipeGestureRecognizer) 长按手势(LongPressGestureRecognizer) 捏合手势(PinchGestureRecognizer) 旋转手势(RotationGestureRecognizer) 一、轻击手势 使用方式...

tianyitianyi1的专栏 783

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ios 全屏返回手势

感谢前人的无私奉献.简书原文,优化有bar,无bar的切换 前言 苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作。 这个操作的想法非常好,但是系统给我们规定的范围必须是屏幕左侧边缘才可以触发,这样实际使用过程中对于有些产品会产生不便...

gcs的博客 8570

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS 拖动手势

iOS 手势中还包含了一种--拖动 上节我们简单介绍了旋转手势:http://blog.youkuaiyun.com/lwjok2007/article/details/50835884 这节 我们简单介绍一下拖动手势  UIPanGestureRecognizer 同样 先建项目 起名 testPan 在默认生成的ViewController中写代码

6796

iOS手势操作UIGestureRecognizer

一、概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

347

【iOS】—— 系统手势操作

在我们平时使用app的时候,会涉及到一些比较奇特的功能,比如在查看图片的时候,大部分软件我们都可以双击放大图片,包括一些按钮,它的点按和长按也会有不同的效果,对于这些要怎么实现呢?iOS 系统在 3.2 以后,他提供了六种常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作。

m0_62386635的博客 568

ios13全选手势_iOS13操作新手势:使用iPhone编辑文本更方便

iOS13为iPhone加入全新的编辑编辑功能,当中包括了使用3只手指的全新手势操作,另外因应iPhone11不支持3D Touch,操作方式亦因应HapticT ouch作出改变。以下就为大家介绍iOS13的编辑手势操作。iPhone升级iOS13后编辑操作上跟旧版本有不少的改变,其中一项改变,就是可以利用屏幕右侧的浏览标记,在文章或网页中快速上下拉动。比起以往利用两字去上下拉动文章,加多一个方...

weixin_27437725的博客 3916

IOS- ios的手势操作之UIGestureRecognizer

一、概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

梦从这里启航,代码改变世界 637
上一篇: TCP/IP、Http、Socket的区别?
下一篇: iOS - 同一个View识别单击和双击手势
喵星人Xcode
博客等级 码龄11年 235粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值