- 浏览: 206627 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xyyx_nk:
在demo中没有下载的示例,能详细说一下怎么监听下载过程吗?比 ...
DhNet 网络http工具(带缓存功能哦) -dhroid文档 -
zhaoguowei998:
dhroid ioc模块对 加密混淆问题 -
zhaoguowei998:
你太牛了,佩服佩服,以后要多想你请教了
dhroid ioc模块对 加密混淆问题 -
白色蜻蜓:
转载下您的文章,已注明出处。
IOS开发之百度地图API应用 -
wenjiefeng:
你好,在andrioidpn-client客户端源码里,Not ...
Android 推送之原理与初触Androidpn(Android Push Notification)
首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下:
往viewController.xib文件里拖动一个imageView,并使覆盖整个屏幕,改动属性为:
viewController.h文件:
[cpp]viewplaincopy
1. #import <UIKit/UIKit.h>
2.
3. @interface ViewController : UIViewController{
4. IBOutlet UIImageView *imageView;
5. }
6. @property (nonatomic,retain)IBOutlet UIImageView *imageView;
7. @end
并使xib文件里的imageView与之连接;
然后是viewController.m文件的实现部分:
[cpp]viewplaincopy
1. @synthesize imageView;
2.
3. CGFloat lastScaleFactor=1;//放大、缩小
4. CGFloat netRotation;//旋转
5. CGPoint netTranslation;//平衡
6. NSArray *images;//图片数组
7. int imageIndex=0;//数组下标
8.
9. - (void)viewDidLoad
10. {
11. //1、创建手势实例,并连接方法handleTapGesture,点击手势
12. UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];
13. //设置手势点击数,双击:点2下
14. tapGesture.numberOfTapsRequired=2;
15. // imageView添加手势识别
16. [imageView addGestureRecognizer:tapGesture];
17. //释放内存
18. [tapGesture release];
19.
20. //2、手势为捏的姿势:按住option按钮配合鼠标来做这个动作在虚拟器上
21. UIPinchGestureRecognizer *pinchGesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinchGesture:)];
22. [imageView addGestureRecognizer:pinchGesture];//imageView添加手势识别
23. [pinchGesture release];
24.
25. //3、旋转手势:按住option按钮配合鼠标来做这个动作在虚拟器上
26. UIRotationGestureRecognizer *rotateGesture=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotateGesture:)];
27. [imageView addGestureRecognizer:rotateGesture];
28. [rotateGesture release];
29.
30. //4、拖手势
31. UIPanGestureRecognizer *panGesture=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanGesture:)];
32. // [imageView addGestureRecognizer:panGesture];
33. [panGesture release];
34.
35. //5、划动手势
36. images=[[NSArray alloc]initWithObjects:@"cell.jpg",@"heihua.jpg",@"xuanyi.jpg", nil];
37. //右划
38. UISwipeGestureRecognizer *swipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];
39. [imageView addGestureRecognizer:swipeGesture];
40. [swipeGesture release];
41. //左划
42. UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];
43. swipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;//不设置黑夜是右
44. [imageView addGestureRecognizer:swipeLeftGesture];
45. [swipeLeftGesture release];
46.
47. //6、长按手势
48. UILongPressGestureRecognizer *longpressGesutre=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongpressGesture:)];
49. //长按时间为1秒
50. longpressGesutre.minimumPressDuration=1;
51. //允许15秒中运动
52. longpressGesutre.allowableMovement=15;
53. //所需触摸1次
54. longpressGesutre.numberOfTouchesRequired=1;
55. [imageView addGestureRecognizer:longpressGesutre];
56. [longpressGesutre release];
57.
58. [super viewDidLoad];
59. // Do any additional setup after loading the view, typically from a nib.
60. }
61. //双击屏幕时会调用此方法,放大和缩小图片
62. -(IBAction)handleTapGesture:(UIGestureRecognizer*)sender{
63. //判断imageView的内容模式是否是UIViewContentModeScaleAspectFit,该模式是原比例,按照图片原时比例显示大小
64. if(sender.view.contentMode==UIViewContentModeScaleAspectFit){
65. //把imageView模式改成UIViewContentModeCenter,按照图片原先的大小显示中心的一部分在imageView
66. sender.view.contentMode=UIViewContentModeCenter;
67. }else{
68. sender.view.contentMode=UIViewContentModeScaleAspectFit;
69. }
70. }
71. //捏的手势,使图片放大和缩小,捏的动作是一个连续的动作
72. -(IBAction)handlePinchGesture:(UIGestureRecognizer*)sender{
73. //得到sender捏手势的大小
74. CGFloat factor=[(UIPinchGestureRecognizer*)sender scale];
75. if(factor>1){
76. //图片放大
77. sender.view.transform=CGAffineTransformMakeScale(lastScaleFactor+(factor-1), (lastScaleFactor+(factor-1)));
78.
79. }else{
80. //缩小
81. sender.view.transform=CGAffineTransformMakeScale(lastScaleFactor*factor, lastScaleFactor*factor);
82.
83. }
84. //状态是否结束,如果结束保存数据
85. if(sender.state==UIGestureRecognizerStateEnded){
86. if(factor>1){
87. lastScaleFactor+=(factor-1);
88. }else{
89. lastScaleFactor*=factor;
90. }
91. }
92. }
93. //旋转手势
94. -(IBAction)handleRotateGesture:(UIGestureRecognizer*)sender{
95. //浮点类型,得到sender的旋转度数
96. CGFloat rotation=[(UIRotationGestureRecognizer*)sender rotation];
97. //旋转角度CGAffineTransformMakeRotation
98. CGAffineTransform transform=CGAffineTransformMakeRotation(rotation+netRotation);
99. //改变图像角度
100. sender.view.transform=transform;
101. //状态结束,保存数据
102. if(sender.state==UIGestureRecognizerStateEnded){
103. netRotation+=rotation;
104. }
105.
106. }
107. //拖手势
108. -(IBAction)handlePanGesture:(UIGestureRecognizer*)sender{
109. //得到拖的过程中的xy坐标
110. CGPoint translation=[(UIPanGestureRecognizer*)sender translationInView:imageView];
111. //平移图片CGAffineTransformMakeTranslation
112. sender.view.transform=CGAffineTransformMakeTranslation(netTranslation.x+translation.x, netTranslation.y+translation.y);
113. //状态结束,保存数据
114. if(sender.state==UIGestureRecognizerStateEnded){
115. netTranslation.x+=translation.x;
116. netTranslation.y+=translation.y;
117. }
118.
119. }
120. //划动手势
121. -(IBAction)handleSwipeGesture:(UIGestureRecognizer*)sender{
122. //划动的方向
123. UISwipeGestureRecognizerDirection direction=[(UISwipeGestureRecognizer*) sender direction];
124. //判断是上下左右
125. switch (direction) {
126. case UISwipeGestureRecognizerDirectionUp:
127. NSLog(@"up");
128. break;
129. case UISwipeGestureRecognizerDirectionDown:
130. NSLog(@"down");
131. break;
132. case UISwipeGestureRecognizerDirectionLeft:
133. NSLog(@"left");
134. imageIndex++;//下标++
135. break;
136. case UISwipeGestureRecognizerDirectionRight:
137. NSLog(@"right");
138. imageIndex--;//下标--
139. break;
140. default:
141. break;
142. }
143. //得到不越界不<0的下标
144. imageIndex=(imageIndex<0)?([images count]-1):imageIndex%[images count];
145. //imageView显示图片
146. imageView.image=[UIImage imageNamed:[images objectAtIndex:imageIndex]];
147.
148. }
149. //长按手势
150. -(IBAction)handleLongpressGesture:(UIGestureRecognizer*)sender{
151. //创建警告
152. UIActionSheet *actionSheet=[[UIActionSheet alloc]initWithTitle:@"Image options" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Save Image",@"Copy", nil];
153. //当前view显示警告
154. [actionSheet showInView:self.view];
155. [actionSheet release];
156. }
157. -(void)dealloc{
158. [images release];
159. [imageView release];
160. [super dealloc];
161. }
发表评论
-
GDataXML解析XML文档
2013-01-09 09:57 808在IOS平台上进行XML文档的解析有很多种方 ... -
GDataXMLNode.h
2012-11-20 12:13 844首先就是先现在Google的 ... -
IOS开发之百度地图API应用
2012-11-14 11:13 1621问题 2012-10-26 11:37:05.519 ... -
UIGestureRecognizer 的使用
2012-11-13 10:14 870UIKit中包含了UIGestureRecogniz ... -
ios 增加对点击图片的响应
2012-11-12 21:37 797interface builder中没有提供对点击组件I ... -
UIScrollView(滚动控件)的详细讲解(五5.14)
2012-11-12 14:31 855今天就讲下UIScrollView的 ... -
UILabel(label控件)的详细使用及特殊效果(五5.6)
2012-11-12 14:25 805详细使用: UILabel *label = ... -
关于iOS App的切图
2012-11-12 13:48 917图形用户界面中的图 ... -
在ARC工程中制定部分文件不适用ARC编译的方法
2012-11-09 14:44 900在ARC工程中制定部分文件不适用ARC编译的方法 ... -
iOS开发-代码块的使用(二)
2012-11-06 14:31 800翻译自 http://pragmaticstudio.com/ ... -
在iOS4中使用代码块-基础知识
2012-11-06 14:05 847翻译自 http://pragmaticstudio.c ... -
IOS开发 REST请求 ASIHTTPRequest用法
2012-10-25 17:54 1038ASIHTTPRequest类库简介和使用说明 ...
相关推荐
在Swift中,我们可以使用内置的手势识别类(UIGestureRecognizer)来实现各种用户交互操作,如点击、双击、捏合、旋转、拖动、滑动以及长按。以下是对这些手势的详细介绍和示例代码。 1. **UITapGestureRecognizer ...
在iOS开发中,手势识别是实现用户交互的关键技术之一,特别是在iOS 5.0及更高版本中,苹果引入了更加直观和便捷的方式来集成手势识别。本教程将详细讲解如何在UIViewController中使用简单手势识别,主要关注...
- UILongPressGestureRecognizer:识别长按(Long Press)手势。 2. 使用手势的步骤 使用手势识别通常涉及以下两个主要步骤: - 创建手势实例:根据需要选择适当的手势子类,并实例化它。同时,你需要指定一个处理...
本资源“用于iPhone的简单Objective-C手势识别器_Objective-C_下载.zip”包含了一个名为“GLGestureRecognizer-master”的项目,旨在帮助开发者理解和实现手势识别功能。手势识别是iOS应用中的重要组成部分,它允许...
iPhone设备上的手势识别技术允许用户通过简单的触摸屏幕动作与应用进行交互,如滑动(Swipe)、轻拍(Tap)、双击(Double Tap)、捏合(Pinch)、旋转(Rotate)等。这些手势不仅提升了用户的操作体验,也为开发者...
在上面的代码中,我们创建了一个双击手势识别器,并将其添加到指定的视图上。`handleTap:`是响应轻拍手势的处理方法。 实现手势识别的回调方法,如下所示: ```objc - (void)handleTap:(UITapGestureRecognizer *)...
在Swift程序中实现手势识别是iOS应用开发中的一个重要部分,它可以极大地增强用户的交互体验。Swift提供了多种内置的手势识别类,使得开发者能够轻松地识别和处理用户的各种触摸操作。以下是一份详细的指南,介绍...
### 三、双击手势(UITapGestureRecognizer) 双击手势用于检测用户在特定区域连续快速点击两次。双击手势常用于放大缩小图片、切换视图或者关闭窗口。 **实现双击手势:** ```swift let doubleTapGesture = ...
"手势识别器之敲击"是一个典型的iOS开发示例,专注于讲解如何实现敲击(Tap Gesture)的识别功能。在这个Demo中,我们将深入探讨敲击手势的基本概念、实现过程以及在实际应用中的用途。 首先,敲击手势(Tap ...
4. **旋转(Rotate)**: UIRotationGestureRecognizer识别手指旋转手势。 5. **滑动(Swipe)**: UISwipeGestureRecognizer用于快速滑动,可识别上滑、下滑、左滑、右滑。 二、添加手势识别器 要为视图添加手势...
触屏手势识别是现代智能设备,尤其是智能手机和平板电脑中不可或缺的一部分。这一技术使得用户可以通过在屏幕上执行特定的手势来实现各种操作,极大地提升了人机交互的效率和体验。手势识别涉及计算机视觉、机器学习...
双击手势类似,只需更改`numberOfTapsRequired`属性: ```swift let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap)) doubleTapGesture.numberOfTapsRequired = 2 ...
1. 基本手势:触摸手势主要包括滑动(Swipe)、点击(Tap)、双击(Double Tap)、长按(Long Press)、捏合缩放(Pinch to Zoom)、旋转(Rotate)等。这些基本手势对应不同的操作指令,如滑动用于页面切换,双击...
3. **手势识别(GestureRecognizer)**:iOS提供多种手势识别类,如UIPanGestureRecognizer、UITapGestureRecognizer等。在这个项目中,可以使用UIPanGestureRecognizer监听用户对图片的滑动手势。当用户滑动时,...
`UIGestureRecognizer`是iOS SDK中处理用户触摸事件的基础类,它提供了多种手势类型,如轻拍(UITapGestureRecognizer)、滑动(UISwipeGestureRecognizer)和长按(UILongPressGestureRecognizer)等。而`...
手势识别器(Gesture Recognizer)用于识别触摸序列并触发响应事件。当手势识别器识别到一个手势或手势发生变化时,会触发响应事件。UIGestureRecognizer类作为抽象类,不能直接使用。只能使用UIGestureRecognizer的...
在iOS SDK中,`UIGestureRecognizer`是手势识别的核心类,它提供了多种内置手势类型,如轻拍(Tap)、滑动(Swipe)、长按(Long Press)、捏合(Pinch)和旋转(Rotation)。开发者可以将这些手势添加到视图...
6. UILongPressGestureRecognizer:识别长按手势。 二、UIGestureRecognizer属性 手势识别器有多个关键属性,包括: - state:表示手势的状态,例如Possible、Began、Changed、Ended、Cancelled、Failed和...
在iOS中,手势识别主要由`UIPanGestureRecognizer`(拖动)、`UITapGestureRecognizer`(点击)、`UIPinchGestureRecognizer`(捏合)、`UIRotationGestureRecognizer`(旋转)和`UISwipeGestureRecognizer`(滑动)...
这七大手势通常指的是:单击(Tap)、双击(Double Tap)、长按(Long Press)、滑动(Swipe)、拖拽(Pan)、捏合(Pinch)和旋转(Rotation)。 1. **单击(Tap)**:单击手势是最基础的手势,用于响应用户的轻触...