一、以下为移动、缩放、旋转、点击手势:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIGestureRecognizerDelegate> @property (weak, nonatomic) IBOutlet UIImageView *imageView; @property (nonatomic) CGFloat lastScal; @property (nonatomic) CGFloat _x; @property (nonatomic) CGFloat _y; @property (nonatomic) CGFloat _lastRotation; @end
#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize imageView; @synthesize lastScal,_x,_y,_lastRotation; - (void)viewDidLoad { [super viewDidLoad]; //缩放手势 UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; [pinchRecognizer setDelegate:self]; [self.view addGestureRecognizer:pinchRecognizer]; //移动手势 UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; [panRecognizer setMinimumNumberOfTouches:1]; [panRecognizer setMaximumNumberOfTouches:1]; [panRecognizer setDelegate:self]; [self.view addGestureRecognizer:panRecognizer]; //旋转 UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; [rotationRecognizer setDelegate:self]; [self.view addGestureRecognizer:rotationRecognizer]; //点击 imageView.userInteractionEnabled = YES; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click:)]; [imageView addGestureRecognizer:tap]; } //缩放 - (void)scale:(id)sender{ [self.view bringSubviewToFront:[(UIPinchGestureRecognizer *)sender view]]; //当手指离开屏幕时,将lastScale设置为1.0 if ([(UIPinchGestureRecognizer *)sender state] == UIGestureRecognizerStateEnded) { lastScal = 1.0; return; } CGFloat sa = 1.0-(lastScal-[(UIPinchGestureRecognizer *)sender scale]); CGAffineTransform currentTransform = [(UIPinchGestureRecognizer *)sender view].transform; CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, sa, sa); [[(UIPinchGestureRecognizer *)sender view] setTransform:newTransform]; lastScal = [(UIPinchGestureRecognizer *)sender scale]; NSLog(@"lastScal : %f",lastScal); } //移动 -(void)move:(id)sender{ CGPoint translatedPoint = [(UIPanGestureRecognizer *)sender translationInView:self.view]; if ([(UIPanGestureRecognizer *)sender state]==UIGestureRecognizerStateBegan) { _x = [imageView center].x; _y = [imageView center].y; } translatedPoint = CGPointMake(_x+translatedPoint.x, _y+translatedPoint.y); [imageView setCenter:translatedPoint]; } // 旋转 -(void)rotate:(id)sender { if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { _lastRotation = 0.0; return; } CGFloat rotation = 0.0 - (_lastRotation - [(UIRotationGestureRecognizer*)sender rotation]); CGAffineTransform currentTransform = imageView.transform; CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); [imageView setTransform:newTransform]; _lastRotation = [(UIRotationGestureRecognizer*)sender rotation]; } //点击 - (void)click:(id)sender{ NSLog(@"click...."); } //手势代理方法 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ NSLog(@"gestureRecognizer..."); return ![gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
二、以下为禁止侧滑返回:
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // 禁用返回手势 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } } - (void) viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; //开启返回手势,解决侧滑返回时需跳到指定页面 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } }
相关推荐
本Demo,"ios手势图形解锁完整Demo",提供了一个实现这一功能的实例,使得开发者可以快速理解和应用这种技术。 一、手势图形解锁原理 手势图形解锁的核心原理是利用触摸屏设备的多点触控能力,记录用户在预设画布上...
**iOS手势解锁详解** 在iOS操作系统中,手势解锁是一种安全且直观的设备解锁方式,它允许用户通过在触摸屏上绘制特定的图案来解锁设备。本文将深入探讨iOS手势解锁的功能、工作原理以及如何实现这一功能。 ### 一...
iOS手势主要包括基本手势、复合手势以及自定义手势。 1. 基本手势: - `UIPanGestureRecognizer`: 平移手势,用于检测用户在屏幕上进行的平移操作。 - `UIPinchGestureRecognizer`: 捏合手势,用于识别用户的手指...
本项目"ios手势操作演示"是一个使用Swift编写的示例,旨在帮助开发者理解和应用iOS中的手势识别技术。 Swift是Apple为iOS、macOS、watchOS和tvOS平台推出的一种强大且易学的编程语言,它具有现代编程语言的特点,如...
在iOS平台上,手势是用户与设备交互的重要方式,它们提供了直观、自然的界面操作体验。以下是对iOS中主要手势的详细解析: 1. **轻拍(Tap)**: 轻拍是最基本的手势,通常用于选择或激活某个元素。用户只需短暂地...
总的来说,“iOS手势返回上一级”是iOS用户体验的关键组成部分,开发者需要充分理解和掌握其工作原理,以便在应用中实现高效、流畅的导航。通过自定义和优化手势,可以进一步提升应用的用户满意度。
iOS中各种手势的详细用法,包括冲突手势的区分
以下是一些关于iOS手势的重要知识点: 1. **UIGestureRecognizer**: 这是iOS中的主要手势类,它提供了一个框架,用于识别并响应各种触摸事件。UIGestureRecognizer有多种子类,如UIPanGestureRecognizer(拖动)、...
本文将详细解析如何使用Objective-C实现一个iOS手势解锁功能,并基于提供的"GesturePass"压缩包文件进行讲解。 首先,手势解锁的核心在于识别用户在触屏上绘制的特定图案。在Objective-C中,我们可以利用`...
ios 手势代码 demo 大全 ios手势代码demo大全
iOS手势识别为开发者提供了丰富的用户交互可能性。通过`UIGestureRecognizer`及其子类,我们可以轻松地添加点击、双击、旋转、缩放和拖拽等手势到应用中,从而提升用户体验。在实际项目中,根据需求调整手势的灵敏度...
本文将深入探讨iOS手势锁屏的相关知识点。 首先,我们要了解手势解锁的工作原理。手势锁屏是基于触摸屏设备的多点触控技术,用户在预设的解锁区域内绘制特定的轨迹,系统会记录并识别这个轨迹作为解锁密码。当用户...
这个压缩包“ios手势解锁相关代码_很好.zip”很可能包含了一个实现这一功能的示例项目,名为“GestureLockDemo”。下面,我们将深入探讨iOS手势解锁背后的技术细节、实现方法以及相关的编程知识点。 首先,我们要...
在这个"ios手势程序"中,我们将会探讨以下几个基本的手势实现: 1. **轻扫(Swipe)手势**: 文件名:`DroppableView_10826.zip` 轻扫手势允许用户通过快速滑动手指来触发特定的事件。在iOS中,有两种主要类型的...
总之,这个手势密码源码提供了了解和学习iOS手势验证机制的良好机会。开发者可以借此深入理解触摸事件处理、自定义视图绘制以及用户交互设计等方面的知识,同时也可以根据自身项目需求进行相应的扩展和优化。
这个“iOS应用源码之iOS手势滑动截屏”压缩包中包含的资源,显然是一份用于实现这一功能的源代码。这份源码可以帮助开发者深入了解如何在自己的iOS应用中集成手势识别和屏幕截图的机制,提升用户体验。 首先,我们...
首先,我们来讨论iOS手势识别。iOS系统支持多种内置手势,如轻触(Tap)、滑动(Swipe)、捏合(Pinch)、旋转(Rotate)以及拖放(Drag & Drop)。在本例中,主要涉及的是滑动手势(Swipe gesture),尤其是水平...
在iOS应用开发中,手势识别和导航控制是用户体验的关键组成部分。标题提到的“ios 手势右滑视觉差 效果类似微信QQ等返回操作”是iOS应用中常见的一种交互设计,模仿了如微信、QQ等流行应用的交互模式,为用户提供更...
这份"ios手势和触摸代码完整版.7z"资源很可能是包含了实现这些功能的各种示例代码,帮助开发者深入理解和实践。 首先,我们要了解iOS中的基本触摸事件。iOS设备的屏幕可以检测到多个触摸点,这些触摸事件主要分为...
总的来说,实现iOS手势锁屏功能需要综合运用多种技术,包括手势识别、图形编程、触摸事件处理、状态管理、动画效果以及数据存储。开发者需要对iOS SDK有深入理解,才能创造出流畅且安全的手势解锁体验。