8.2 Detecting Rotation Gestures

2024-03-01 10:18

本文主要是介绍8.2 Detecting Rotation Gestures,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


旋转手势


@interface ViewController ()


@property (nonatomic, strong) UIRotationGestureRecognizer *rotationGestureRecognizer;

@property (nonatomic, strong) UILabel *helloWorldLabel;

/* We can remove the nonatomic and the unsafe_unretained marks from this property declaration. On a float value, the compiler will generate both these for us automatically */

@property (nonatomic, unsafe_unretained) CGFloat rotationAngleInRadians;


@end


@implementation ViewController


- (void) handleRotations:(UIRotationGestureRecognizer *)paramSender{

    NSLog(@"%@ \nrotation=%f \nvelocity=%f",paramSender,paramSender.rotation,paramSender.velocity);

    if (self.helloWorldLabel == nil){

        return;

    }

    /* Take the previous rotation and add the current rotation to it */

    self.helloWorldLabel.transform = CGAffineTransformMakeRotation(self.rotationAngleInRadians +

                                                                   paramSender.rotation);

    /* At the end of the rotation, keep the angle for later use */

    if (paramSender.state == UIGestureRecognizerStateEnded){

        self.rotationAngleInRadians += paramSender.rotation;

        NSLog(@"rotationAngleInRadians=%f",self.rotationAngleInRadians);

    }

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    self.helloWorldLabel = [[UILabel alloc] initWithFrame:CGRectZero];

    self.helloWorldLabel.text = @"Hello, World!";

    self.helloWorldLabel.font = [UIFont systemFontOfSize:66.0f];

    [self.helloWorldLabel sizeToFit];

    self.helloWorldLabel.center = self.view.center;

    [self.view addSubview:self.helloWorldLabel];

    self.rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self

                                                                                  action:@selector(handleRotations:)];

    [self.view addGestureRecognizer:self.rotationGestureRecognizer];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end

输出:

第一把旋转:

2014-04-10 09:35:01.240 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Began; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.001488 

velocity=0.350469

2014-04-10 09:35:01.255 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.018048 

velocity=0.518359

……..

……..


2014-04-10 09:35:02.487 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=1.026013 

velocity=0.039118

2014-04-10 09:35:02.503 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=1.026013 

velocity=0.039118

2014-04-10 09:35:02.519 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Ended; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=1.026013 

velocity=0.039118

2014-04-10 09:35:02.521 cookbook[507:907] rotationAngleInRadians=1.026013




第二把旋转:

2014-04-10 09:38:56.187 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Began; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.000381 

velocity=0.158696

2014-04-10 09:38:56.203 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.002872 

velocity=0.157695

2014-04-10 09:38:56.206 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.002872 

velocity=0.157695

……

…...

2014-04-10 09:38:56.619 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Changed; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.074877 

velocity=0.064103

2014-04-10 09:38:56.683 cookbook[507:907] <UIRotationGestureRecognizer: 0x18faf0; state = Ended; view = <UIView 0x386250>; target= <(action=handleRotations:, target=<ViewController 0x3842b0>)>> 

rotation=0.074877 

velocity=0.064103

2014-04-10 09:38:56.685 cookbook[507:907] rotationAngleInRadians=1.100890




CGAffineTransformMakeRotation

看到这个函数了没,学校里学的转换的知识还记得吗,要不要赶紧复习下






这篇关于8.2 Detecting Rotation Gestures的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762099

相关文章

《数据结构(C语言版)第二版》第八章-排序(8.2-插入排序)

【8.2插入类、8.3交换类、8.4选择类、8.5归并类、8.6分配类 都属于内部排序。 】 8.2 插入排序 8.2.1 直接插人排序 【算法特点】 (1)稳定排序。 (2)算法简便,且容易实现。 (3)也适用于链式存储结构,只是在单链表上无需移动记录,只需修改相应的指针。 (4)更适合于初始记录基本有序(正序)的情况。 当初始记录无序,n较大时,此算法时间复杂度较高,不宜采用。 #in

25版王道数据结构课后习题详细分析 第八章 8.2 插入排序

一、单项选择题 ———————————————————— ———————————————————— 解析:直接插入排序在最坏的情况下要做n(n-1)/2次关键字的比较,当n=5时, 关键字的比较次数为10。注意不考虑与哨兵的比较。 正确答案: ———————————————————— ———————————————————— 解析:由于序列初始基本有序,因此使用直接插入排序

动手学深度学习8.2. 文本预处理-笔记练习(PyTorch)

本节课程地址:代码_哔哩哔哩_bilibili 本节教材地址:8.2. 文本预处理 — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>text-preprocessing.ipynb 文本预处理 对于序列数据处理问题,我们在 8.1节 中 评估了

Guitar Pro 8.2中文破解版 2024最新安装图文教程

Guitar Pro8中文破解版是一款专门针对吉他、五弦琴、以及贝斯爱好者打造而成的阅读器和编辑器软件,是系列软件的最新版本。这款软件采用了简洁直观的纯中文操作界面并且还内置了一系列便捷功能,相关用户在这里可以进行各种曲谱的学习、绘谱、创作等一系列操作,从而能够很好的满足了相关用户的使用需求。 Guitar Pro 8是一款功能强大的指法阅读器和编辑器,它允许您编辑吉他、

Guitar Pro 8.2.1 Build 32+Soundbanks Win/Mac音色库 开心激活版 音乐软件Guitar Pro 8中文破解版

音乐软件Guitar Pro 8中文破解版是一个受吉他手喜爱的吉他和弦、六线谱、BASS 四线谱绘制、打印、查看、试听软件,它也是一款优秀的 MIDI 音序器,MIDI 制作辅助工具,可以输出标准格式的 MIDI。GP 的过人之处就在于它可以直接用鼠标和键盘按标准的六线谱、四线谱进行乐谱输入、查看、打印和试听(可以实时、自动滚屏、多种模式的显示单声部或乐曲总谱),在做弹拨乐器的滑音、倚音、推弦、揉

[论文笔记]Arbitrary-Oriented Scene Text Detection via Rotation Proposals

Arbitrary-Oriented Scene Text Detection via Rotation Proposals 论文地址:https://arxiv.org/abs/1703.01086 github地址:https://github.com/mjq11302010044/RRPN 该论文是基于faster-rcnn框架,在场景文字识别领域的应用。 创新点:生成带文字

EmguCV学习笔记 VB.Net 8.2 分水岭法 watershed

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问:EmguCV学习笔记 C# 目录-CSDN博客 笔者的

Guitar Pro 8.2中文版图文安装激活使用指南

吉他谱曲软件Guitar Pro 8中文版是Arobas Music公司历时5年的一个全新之作,作为专业的吉他软件,能够创建不同的音轨完成不同乐器乐谱的编排和制作,这次在最新版本中新增了音频轨道、效果器视图、音阶示意图和音频音符微调等功能,优化了乐谱的编辑流程,支持批量调整音量。小哥聊软件为您提供Guitar Pro 8破解版下载,附有详细的安装教程。 软件详情 Guitar Pro 8.2是

算法导论 第二版 8.2 计数排序

根据伪码编写: #include <iostream>#include <ctime>using namespace std;void counting_sort(int *A, int *B, int *C, int k, int n)//B是排序输出,C用来计数{for(int i = 0; i <= k; i++)//初始化CC[i] = 0;for(int j = 0; j <=

centos7 升级openssh 8.2版本

安装之前可以先试试yum更新,若是可以更新,就不需要往下看了 centos7 $ yum update openssh -y 重启sshd $ systemctl restart sshd 系统版本 [root@centos7-demo ~]# uname -a Linux centos7-demo 5.4.104-1.el7.elrepo.x86_64 #1 SMP Mon Mar 8