文档章节

IOS开发之UI手势

鹿微微鹿
 鹿微微鹿
发布于 2016/04/25 20:13
字数 855
阅读 19
收藏 0
  1. 点击手势和双击手势



  2. #import "TapViewController.h"


  3. @interface TapViewController ()


  4. @end


  5. @implementation TapViewController


  6. - (void)viewDidLoad {

  7.     [super viewDidLoad];

  8.     // Do any additional setup after loading the view.

  9.     

  10.     //点击手势:

  11.      //=================单击===========

  12.     //1.创建一个点击手势对象

  13.     //UIGestureRecognizer是所有手势的父类,一般不会直接使用哪个它

  14.     //而是使用它的子类

  15.     //参数1:响应手势的对象;

  16.     //参数2:响应的消息

  17.     //功能:发生点击动作,对象去响应这个手势

  18.     UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer

  19.                                            alloc]initWithTarget:self action:@selector(tapGesture:)];

  20.     

  21.     //2.添加手势到指定的视图上(任何手势都可以添加到任何继承自UIView的类的对象上)

  22.     

  23.     [self.view addGestureRecognizer:tapGesture];

  24.     

  25.     

  26.     //=================双击===========

  27.     

  28.     //1.创建点击对象

  29.     UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]

  30.                                          initWithTarget:self action:@selector(doubleTap:)];

  31.     

  32.     //2.设置点击次数

  33.     doubleTap.numberOfTapsRequired = 2;

  34.     

  35.     

  36.     //4.忽略其他手势

  37.     //单击的时候忽略双击;

  38.     [tapGesture requireGestureRecognizerToFail:doubleTap];

  39.     

  40.     //3.将手势添加到指定的视图控制器上

  41.     [self.view addGestureRecognizer:doubleTap];

  42.     

  43.     

  44. }


  45. #pragma mark -单击手势响应

  46. - (void)tapGesture:(UITapGestureRecognizer *)tap{

  47.     //获取点击手势的坐标

  48.     

  49.     CGPoint point = [tap locationInView:self.view];

  50.     

  51.     // NSLog(@"%@",NSStringFromCGPoint(point));

  52.     

  53.     NSLog(@"单击");

  54. }




  55. #pragma mark - 双击事件响应

  56. - (void)doubleTap:(UIGestureRecognizer *)doubleTap{

  57.     

  58.     //获取点击手势的坐标

  59.     

  60.     CGPoint point = [doubleTap locationInView:self.view];

  61.     

  62.     //NSLog(@"%@",NSStringFromCGPoint(point));

  63.     

  64.     NSLog(@"双击");

  65. }




  66. @end



长按手势:关键在于设置手势的时间



#import "LongPressViewController.h"


@interface LongPressViewController ()


@end


@implementation LongPressViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //1.创建长按手势对象

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

    

    //3.设置长按时间

    longPress.minimumPressDuration = 1;

    

    //2.将手势添加到视图控制器上;

    [self.view addGestureRecognizer:longPress];

    

    

}


#pragma mark -响应长按手势

//这个方法在手势的状态发生改变的时候调用

- (void)longPress : (UILongPressGestureRecognizer *)longPress{

    

    //手势的状态:(针对所有的手势都适用)

//UIGestureRecognizerStateBegan:手势开始

//UIGestureRecognizerStateChanged:手势改变

//UIGestureRecognizerStateEnded:手势结束

    //longPress setState:<#(UIGestureRecognizerState)#>

    if (longPress.state == UIGestureRecognizerStateBegan) {

        NSLog(@"长按");

    }

    

    

    

    

    

  //  NSLog(@"长按");

    

    

}



@end



滑动手势:关键在于设置滑动的方向



#import "SwipeViewController.h"


@interface SwipeViewController ()


@end


@implementation SwipeViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //1.创建滑动手势对象

    UISwipeGestureRecognizer *swip = [[UISwipeGestureRecognizer alloc]

                                      initWithTarget:self action:@selector(swipGesture:)];

   //3.滑动方向

    //注意:如果想要可以两个方向都可以,滑动方向必须添加一个右划的手势

    

    [swip setDirection:UISwipeGestureRecognizerDirectionLeft];

    

    //2.将手势添加到视图控制器上

    [self.view addGestureRecognizer:swip];

    //=============右划默认是从左向右滑动==========

    UISwipeGestureRecognizer *swipRight = [[UISwipeGestureRecognizer alloc]

                                           initWithTarget:self action:@selector(swipGesture:)];

   // [swip setDirection:UISwipeGestureRecognizerDirectionRight];

    [self.view addGestureRecognizer:swipRight];

    

    

   

    

    

    

}

#pragma mark - 滑动手势响应事件

- (void)swipGesture:(UISwipeGestureRecognizer *)swipGesture{

    if (swipGesture.direction == UISwipeGestureRecognizerDirectionRight) {

        

        NSLog(@"右滑回到下一页");

    }else{

    NSLog(@"左滑到上一页");

    }

}



@end



拖动手势



#import "PanViewController.h"


@interface PanViewController ()


@end


@implementation PanViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //1.创建拖动手势对象

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]

                                          initWithTarget:self action:@selector(pan:)];



    

    

    //2.添加到视图

    [self.imageView addGestureRecognizer:panGesture];

    

}


//这个方法会在拖动过程中时时调用;

#pragma mark - 拖动手势方法

- (void)pan:(UIPanGestureRecognizer *)pan{


    self.imageView.center = [pan locationInView:self.view];

    

    NSLog(@"拖动");

    

}


@end


旋转手势:



#import "RotationViewController.h"


@interface RotationViewController ()


@end


@implementation RotationViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    //1.创建旋转手势对象

    

    UIRotationGestureRecognizer *rotatioin = [[UIRotationGestureRecognizer alloc]

                                              initWithTarget:self action:@selector(rotationG:)];

    //2.添加到视图上

    [self.imageView addGestureRecognizer:rotatioin];

    

}



#pragma mark - 旋转手势事件

- (void) rotationG:(UIRotationGestureRecognizer *)ro{

    static CGFloat lastRotation = 0;

   //® self.imageView.center = [rotation locationInView:self.view];

    

    CGFloat triangle = ro.rotation + lastRotation;

    

    self.imageView.transform = CGAffineTransformMakeRotation(triangle);

    

    if (ro.state == UIGestureRecognizerStateEnded) {

        

        lastRotation = ro.rotation + lastRotation;

        

    }

    

    NSLog(@"旋转");

    

    

    

}



@end


缩放手势


#import "PinchViewController.h"


@interface PinchViewController ()


@end


@implementation PinchViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    //1.创建pinch手势对象

   UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]

                                      initWithTarget:self action:@selector(pinchGesture:)];

    

    //2.添加到视图上

    [self.view addGestureRecognizer:pinch];

    

    

}


- (void)pinchGesture:(UIPinchGestureRecognizer *)pinch{

    

    static CGFloat lastScale =1;

    

    CGFloat scale = pinch.scale;

    //3.通过手势的缩放比例去改变图片的缩放形变;

    

    [self.imageView setTransform:CGAffineTransformMakeScale(scale, scale)];

    

    if (pinch.state == UIGestureRecognizerStateEnded) {

        

        lastScale = pinch.scale * lastScale;

    }

    

    

    NSLog(@"缩放");

    

}



@end


© 著作权归作者所有

鹿微微鹿
粉丝 8
博文 116
码字总数 71882
作品 0
程序员
私信 提问
iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条)

iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条) 需求:WKWebView的一些增加模块,例如上拉刷新,JS交互,加载进度条等等持续更新 阅读前提: } catch(error) { } } (void)headerRefres...

__小___东邪___
2018/11/06
0
0
推荐给 iOS 设计师的工具和资源

苹果App Store 的应用总下载量近日刚突破 250 亿,并继续上升中。毫无疑问,iOS 开发一直是热门话题,这是一个制造了数亿美元的产业。一个成功的应用,需要良好的规划。在理解应用开发流程中...

虫虫
2012/03/11
1K
3
一步一步学习 iOS 6 编程(第四版)正式发布

所有范例程序及其截图都采用Xcode 4.4 和Xcode 4.5 最新版开发工具,本书包含了最新的iOS 6 开发技术,如自动布局(Auto Layout)、集合视图(Collection View)等等。 新增内容包括:分割视...

entlib
2012/10/25
837
2
Windows8 平板 Metro 利器妄图对抗 iPad3?

MWC2012年会微软顺势发布Windows 8消费者预览版,并且在短短的24小时内下载量突破百万,全世界在这个2月的尾声感受到了自Windows 95问世至今变革幅度最大的Metro UI的独特魅力。令人印象最深...

WPDang
2012/03/04
1K
11
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本

谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本 2018-06-22 12:26编辑: 枣泥布丁分类:程序人生来源:程序师 跨平台Google Flutter预览版本 招聘信息: 图像处理及模式识别工程师 C/C+...

枣泥布丁
2018/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
28分钟前
4
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
31分钟前
4
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
34分钟前
3
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
46分钟前
3
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部