UIImageView 7种手势基本介绍

2024-05-12 14:58

本文主要是介绍UIImageView 7种手势基本介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  

//UIImageView的使用

    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 20, 280, 300)];

    [imageView setBackgroundColor:[UIColor redColor]];

    [self.view addSubview:imageView];

    [imageView release];

    //利用图片产生一个UIImage对象

    UIImage *image = [UIImage imageNamed:@"11.png"];

//    UIImage *image1 = [UIImage imageWithContentsOfFile:@"/Users/dlios/Desktop/u=596837638,1893145150&fm=21&gp=0.jpg"];

    //把这张图片加载到相框(UIImageView

    imageView.image = image;

//    imageView.image = image1;

    

    

//手势识别器

    

//1.轻拍手势

    

    //手势需要在定义是绑定一个触发方法(SEL

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

    

    //  轻拍的设置

    //  需要轻拍两次才能响应事件

    tap.numberOfTapsRequired = 2;

    //  手指的个数

    tap.numberOfTouchesRequired = 2;

    

    

    //view添加一个手势

    [imageView addGestureRecognizer:tap];

    [tap release];

    

//2.长按手势(longPress

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];

    [imageView addGestureRecognizer:longPress];

    [longPress release];

    //长按 触发方法   所需要的事件

    longPress.minimumPressDuration = 0.5;

    // 长按时 允许用户移动手指的距离

    longPress.allowableMovement = 100;

    

//3. 清扫手势(swipe

    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];

    //设置清扫的方向

    swipe.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown;

    [imageView addGestureRecognizer:swipe];

    [swipe release];

    

//4.拖拽手势(pan

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];

    [imageView addGestureRecognizer:pan];

    [pan release];

//5.旋转手势(ratation

    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];

    [imageView addGestureRecognizer:rotation];

    [rotation release];

    

//6.捏合手势(pinch

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];

    [imageView addGestureRecognizer:pinch];

    [pinch release];

//7.屏幕边缘拖拽

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

//设置屏幕边缘拖拽的方向

    screenEdgePan.edges = UIRectEdgeLeft;

    

    [imageView addGestureRecognizer:screenEdgePan];

    [screenEdgePan release];

    

    

    

    

    

    //UIImageView的用户交互打开, 使他能响应轻拍

    [imageView setUserInteractionEnabled:YES];

    

    

    

}

// 轻拍的触发方法

- (void)tapAction:(UITapGestureRecognizer *)tap

{

    NSLog(@"轻拍");

}


// 长按的触发方法

- (void)longPressAction:(UILongPressGestureRecognizer *)longPress

{

    if (longPress.state == UIGestureRecognizerStateBegan) {

        NSLog(@"长按");

    }

}

//清扫的触发方式

- (void)swipeAction:(UISwipeGestureRecognizer *)swipe

{

    NSLog(@"清扫");

}

//拖拽的触发方法

- (void)panAction:(UIPanGestureRecognizer *)pan

{

    NSLog(@"拖拽");

    //通过手势的view的属性 获取到当前手势添加到得view

    UIImageView *imageView = (UIImageView *)pan.view;

    //获取到当前手指接触的点

    CGPoint p = [pan translationInView:imageView];

    

    //view变形

    imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y);

    //重置手势的属性

    [pan setTranslation:CGPointZero inView:imageView];

}

//旋转的触发方法

- (void)rotationAction:(UIRotationGestureRecognizer *)rotation

{

    NSLog(@"旋转");

    //获取到当前手势添加到得view

    UIImageView *imageView = (UIImageView *)rotation.view;

    //view旋转  利用旋转手势的旋转弧度

    imageView.transform = CGAffineTransformRotate(imageView.transform, rotation.rotation);

    

    rotation.rotation = 0;

}

//捏合的触发方法

- (void)pinchAction:(UIPinchGestureRecognizer *)pinch

{

    NSLog(@"捏合");

    //获取当前的view

    UIImageView *imageView = (UIImageView *)pinch.view;

    //xy轴方向 放大、缩小

    imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);

    pinch.scale = 1;

    

}

//屏幕边缘拖拽

- (void)screenPan:(UIScreenEdgePanGestureRecognizer *)screenPan

{

    NSLog(@"屏幕边缘拖拽");

}



这篇关于UIImageView 7种手势基本介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982947

相关文章

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题