IOS开发UI篇—手势识别器(拖拽+旋转+缩放)

1 //
 2 //  YYViewController.m
 3 //  06-拖拽事件
 4 //
 5 //  Created by apple on 14-6-19.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 @property (strong, nonatomic) IBOutlet UIView *iconView;
13 
14 @end
15 
16 @implementation YYViewController
17 
18 - (void)viewDidLoad
19 {
20     [super viewDidLoad];
21 
22     //拖拽事件
23     UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]init];
24     [self.iconView addGestureRecognizer:pan];
25     [pan addTarget:self action:@selector(panView:)];
26 }
27 
28 -(void)panView:(UIPanGestureRecognizer*)pan
29 {
30     //以控制器上的view的左上角为坐标原点
31     CGPoint point=[pan locationInView:pan.view];
32     NSLog(@"拖拽事件");
33     NSLog(@"获取到的触摸点的位置为:%@",NSStringFromCGPoint(point));
34     
35     CGPoint point1=[pan translationInView:pan.view];
36     NSLog(@"拖拽事件1");
37     NSLog(@"获取到的触摸点的位置为:%@",NSStringFromCGPoint(point1));
38     
39     //手指拖动,让自定义的view也跟着手指移动
40     CGPoint temp=self.iconView.center;
41     temp.x+=point1.x;
42     temp.y+=point1.y;
43     self.iconView.center=temp;
44     
45     //清空
46     [pan setTranslation:CGPointZero inView:pan.view];
47 }
48 @end
复制代码

 注意点:1.注意拖拽事件的位移叠加。

注意数学递增性,需要在每次调用完之后进行清空处理。

2.注意获取的点是以手指按下的点为原点的。CGPoint point1=[pan translationInView:pan.view];

    //以控制器上的view的左上角为坐标原点 CGPoint point=[pan locationInView:pan.view];

 

二、旋转

示例代码:

复制代码
 1 //
 2 //  YYViewController.m
 3 //  07-旋转
 4 //
 5 //  Created by apple on 14-6-19.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
13 
14 @end
15 
16 @implementation YYViewController
17 
18 - (void)viewDidLoad
19 {
20     [super viewDidLoad];
21     
22     //旋转
23     //创建手势识别器(旋转)
24     UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];
25     //添加手势识别器
26     [self.iconView addGestureRecognizer:gesture];
27     //监听
28     [gesture addTarget:self action:@selector(gestureView:)];
29 }
30 
31 -(void)gestureView:(UIRotationGestureRecognizer*)gesture
32 {
33     
34     //旋转的弧度:gesture.rotation
35     NSLog(@"旋转事件,旋转的弧度为:%1f",gesture.rotation);
36     
37     //让图片跟随手指一起旋转
38     //每次从最初的位置开始
39 //    self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);
40     
41     //在传入的transform的基础上旋转
42     //在之前的基础上,让图片跟随一起旋转(去掉自动布局)
43     //注意问题:以风火轮的速度旋转
44     self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);
45     //将旋转的弧度清零
46     //(注意不是将图片旋转的弧度清零,而是将当前手指旋转的弧度清零)
47     gesture.rotation=0;
48 }
49 @end
复制代码

 注意点:

1.imageview默认为不可交互的,且不支持多点触控,需要在storyboard中勾选这两项。

2.旋转的度数叠加

3.旋转

将旋转弧度清零之后,每次调用又从零开始。

 

三、缩放

复制代码
 1 //
 2 //  YYViewController.m
 3 //  07-旋转
 4 //
 5 //  Created by apple on 14-6-19.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()<UIGestureRecognizerDelegate>
12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
13 
14 @end
15 
16 @implementation YYViewController
17 
18 - (void)viewDidLoad
19 {
20     [super viewDidLoad];
21     [self pinchTest];
22     [self gestureTest];
23 }
24 
25 -(void)pinchTest
26 {
27         //缩放
28     UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]init];
29     [self.iconView addGestureRecognizer:pinch];
30     [pinch addTarget:self action:@selector(pinchView:)];
31     
32     //设置代理
33     pinch.delegate=self;
34 }
35 
36 -(void)pinchView:( UIPinchGestureRecognizer* )pinch
37 {
38     //缩放的比例    pinch.scale;
39     NSLog(@"缩放:%f",pinch.scale);
40     //对图片进行缩放
41 //    self.iconView.transform=CGAffineTransformMakeScale(pinch.scale,pinch.scale);
42     //在已有的基础上对图片进行缩放
43     self.iconView.transform=CGAffineTransformScale(self.iconView.transform, pinch.scale, pinch.scale);
44     //清零
45     pinch.scale=1.0;
46 }
47 -(void)gestureTest
48 {
49     //旋转
50     //创建手势识别器(旋转)
51     UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];
52     //添加手势识别器
53     [self.iconView addGestureRecognizer:gesture];
54     //监听
55     [gesture addTarget:self action:@selector(gestureView:)];
56     
57     //设置代理
58     gesture.delegate=self;
59 }
60 -(void)gestureView:(UIRotationGestureRecognizer*)gesture
61 {
62     
63     //旋转的弧度:gesture.rotation
64     NSLog(@"旋转事件,旋转的弧度为:%1f",gesture.rotation);
65     
66     //让图片跟随手指一起旋转
67     //每次从最初的位置开始
68 //    self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);
69     
70     //在传入的transform的基础上旋转
71     //在之前的基础上,让图片跟随一起旋转(去掉自动布局)
72     //注意问题:以风火轮的速度旋转
73     self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);
74     //将旋转的弧度清零
75     //(注意不是将图片旋转的弧度清零,而是将当前手指旋转的弧度清零)
76     gesture.rotation=0;
77 }
78 
79 //实现代理方法
80 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
81 {
82     //默认为NO,这里设置为YES
83     return YES;
84 }
85 @end
复制代码

 提示:设置手势识别器的代理,使用代理让代理方法返回一个YES的布尔值,能够响应多个手势。

 说明:手指按下的时候为1.如果不进行清零,那么缩放也是叠加的(1.0*0.9*0.8)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值