我的iOS 学习 - 学习基本手势

iOS设计手势符合人的操作习惯,提供了良好的用户体验。

UIGestureRecognizer 手势抽象类,实现类 :

  1. UITapGestureRecognizer  轻击
  2. UILongPressGestureRecognizer  长按
  3. UISwipeGestureRecognizer  轻扫
  4. UIPanGestureRecognizer  拖动
  5. UIPinchGestureRecognizer  捏合缩放
  6. UIRotationGestureRecognizer  旋转

下面是示例,简单的创建一个view,测试使用手势

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     // Do any additional setup after loading the view, typically from a nib.
 4
 5     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 100, 300, 300) ];
 6     view.backgroundColor = [UIColor greenColor];
 7
 8     /** tap 轻击手势 **/
 9     /**
10     UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeBackgroundByTap:)]; //tap 手势
11     tapGesture.numberOfTapsRequired = 2; // tap触发次数
12     tapGesture.numberOfTouchesRequired = 2; // tap手指数
13
14     [view addGestureRecognizer:tapGesture]; //view 增加手势
15     **/
16
17     /** longPress 长按手势 **/
18     /**
19     UILongPressGestureRecognizer *longpressGresture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(changeBackgroundByLongPress:)];
20
21     [view addGestureRecognizer:longpressGresture];
22     **/
23
24     /** swipe 亲扫手势 **/
25     /**
26     UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(changeBackgroundBySwipe:)];
27     swipeGesture.direction = UISwipeGestureRecognizerDirectionDown; // 轻扫方向
28
29      [view addGestureRecognizer:swipeGesture];
30     **/
31
32     /** pan 拖动手势 **/
33     /**
34     UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
35
36     [view addGestureRecognizer:panGesture];
37     **/
38
39     /** pinch 缩放手势 **/
40     /**
41     UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
42
43     [view addGestureRecognizer:pinchGesture];
44     **/
45
46     /** rotation 旋转手势 **/
47     UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];
48
49     [view addGestureRecognizer:rotationGesture];
50
51     [self.view addSubview: view];
52 }

手势对应 action

 1 #pragma mark -
 2 #pragma mark  tap 轻击手势
 3 - (void)changeBackgroundByTap:(UITapGestureRecognizer *)tapGesture {
 4     UIView *view = tapGesture.view; //取得手势作用的view视图
 5     view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 /255.0 green:arc4random() % 256 /255.0 blue:arc4random() % 256 /255.0 alpha:1.0];
 6 }
 7
 8 #pragma mark -
 9 #pragma mark  longPress 长按手势
10 - (void) changeBackgroundByLongPress:(UILongPressGestureRecognizer *)longPressGesture {
11     UIView *view = longPressGesture.view;
12
13     // 这里判断状态,不然会调用两次
14     if (longPressGesture.state == UIGestureRecognizerStateBegan) {
15         view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 /255.0 green:arc4random() % 256 /255.0 blue:arc4random() % 256 /255.0 alpha:1.0];
16     }
17 }
18
19 #pragma mark -
20 #pragma mark  swipe 轻扫手势
21 - (void) changeBackgroundBySwipe:(UISwipeGestureRecognizer *)swipeGesture {
22     UIView *view = swipeGesture.view;
23     view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 /255.0 green:arc4random() % 256 /255.0 blue:arc4random() % 256 /255.0 alpha:1.0];
24 }
25
26 #pragma mark -
27 #pragma mark  pan 拖动手势
28 - (void) panAction:(UIPanGestureRecognizer *)panGesture {
29     UIView *view = panGesture.view;
30     CGPoint offset = [panGesture translationInView:view];
31     NSLog(@"pan 位移 = %@", NSStringFromCGPoint(offset));
32
33     view.transform = CGAffineTransformMakeTranslation(offset.x, offset.y); // 设置transfrom实现手势拖动,
34 }
35
36 #pragma mark -
37 #pragma mark  pinch 缩放手势
38 - (void) pinchAction:(UIPinchGestureRecognizer *)pinchGesture {
39     CGFloat pinchScale = pinchGesture.scale;
40     NSLog(@"pinchSale 缩放比例 = %f", pinchScale);
41
42     pinchGesture.view.transform = CGAffineTransformMakeScale(pinchScale, pinchScale); //设置transform实现手势缩放
43 }
44
45 #pragma mark -
46 #pragma mark  rotation 旋转手势
47 - (void) rotationAction:(UIRotationGestureRecognizer *)rotationGesture {
48     CGFloat rotation = rotationGesture.rotation; // 旋转弧度
49     NSLog(@"rotation 弧度 = %f", rotation);
50
51     rotationGesture.view.transform = CGAffineTransformMakeRotation(rotation); //设置transform实现手势旋转
52 }

以上是iOS手势的基本操作,视图的transform涉及到动画的知识,还在学习中。。。

时间: 2024-11-03 20:58:32

我的iOS 学习 - 学习基本手势的相关文章

iOS手势学习UIGestureRecognizer & cocos2d 手势推荐

iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer  // 长按UIPanGestureRecognizer  // 慢速拖动UIPinchGestureRecognizer  // 两指向內或向外拨动UIRotationGestureRecognizer   // 旋转UISwipeGestureRecognizer   // 快速滑动UITapGestureRecognizer   //

ios学习笔记---ios完整学习路线

ios完整学习路线

ios开发学习资料总汇

ios开发学习资料总汇 下面是收集的一些学习资料. 1.唐巧精心整理了国内40多位iOS开发博主的博客地址列表 2.ios常见加密: 链接: http://pan.baidu.com/s/1eQTGFIE 密码: p8ay 3.

【iOS知识学习】_iOS动态改变TableView Cell高度

在做tableView的时候,我们有时候需要根据cell的高度动态来调整,最近在网上看到一段代码不错,跟大家Share一下. 在 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 类中获取cell的高度: CGSize boundSize = CGSizeMake(216, CGFLOAT_MAX); cell.textLabel.text

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

ios网络学习------11 原生API文件上传之断点续传思路

#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; //下载文件 [self download]; } -(void)download { //1. NSURL NSURL *url = [NSURL URLWithString:@"ht

ios网络学习------8 xml格式数据的请求处理 用代码块封装

#pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里是乱写的 //1简历NSURL NSURL *url = [NSURL URLWithString:str]; //2建立NSURLRequest NSURLRequest *request =

iOS深度学习 - Runtime

这里是iOS深度学习-Runtime的大纲. 一.Class 1,isa指针.super_class指针 2,metaclass(元类) 3,objc_object(表示一个 类的实例 的结构体) 和  id类型(typedef struct objc_object *id) 二.Ivar objc_setAssociatedObject 三.Method cache机制.SEL.IMP指针.Method Swizzling 四.Protocal objc_protocol_list 五.Cat

ios网络学习------9 播放网络视频

IOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类,可以轻松用来实现视频播放.MPMoviePlayerViewController只能全屏播放视频. #import "MainViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface MainViewController () //视频播放器 @property (strong

ios网络学习------4 UIWebView的加载本地数据的三种方式

UIWebView是IOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件.  safari浏览器就是通过UIWebView做的. 服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件. uiwebview加载各种本地文件(通过loadData方法): - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; NSString *path = [[NSBund