博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
"长按实现视图抖动和删除"功能知识点整理
阅读量:6689 次
发布时间:2019-06-25

本文共 2112 字,大约阅读时间需要 7 分钟。

一、功能细分

1、对视图添加长按手势的识别:{ UILongPressGestureRecognizer类的使用}

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

longPressRecognizer.allowableMovement = 30;

[testView addGestureRecognizer:longPressRecognizer];        

[longPressRecognizer release];

 

 

2、删除一个视图后,改变其它视图的位置,可以通过修改其center的值来实现:

如 tempView.center = tempViewCenter;

 

3、抖动的实现:{修改view的 transform值来改变视图的旋转过的角度;通过动画来实现动态角度转动;当动画结束后再时其转动相反角度,也动画实现,如此反复即可。}

- (void)wobble {

static BOOL wobblesLeft = NO;

 

if (isShake) {

CGFloat rotation = (kWobbleRadians * M_PI) / 180.0;

CGAffineTransform wobbleLeft = CGAffineTransformMakeRotation(rotation);

CGAffineTransform wobbleRight = CGAffineTransformMakeRotation(-rotation);

 

[UIView beginAnimations:nil context:nil];

 

NSInteger i = 0;

NSInteger nWobblyButtons = 0;

 

for (UIView *tempView in [scrollView subviews]) {

if ([tempView isKindOfClass:[TestView class]] || [tempView isKindOfClass:[UIButtonclass]]) {

++nWobblyButtons;

if (i % 2) {

tempView.transform = wobblesLeft ? wobbleRight : wobbleLeft;

else {

tempView.transform = wobblesLeft ? wobbleLeft : wobbleRight;

}

++i;

}

}

 

if (nWobblyButtons >= 1) {

[UIView setAnimationDuration:kWobbleTime];

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(wobble)];

wobblesLeft = !wobblesLeft;

 

else {

[NSObject cancelPreviousPerformRequestsWithTarget:self];

[self performSelector:@selector(wobblewithObject:nil afterDelay:kWobbleTime];

}

 

[UIView commitAnimations];

}

}

4、停止抖动:

tempView.transform = CGAffineTransformIdentity;

二、知识点整理

1、

UIGestureRecognizer 手势识别类

2、

NSValue的使用

 

 

3、

CGAffineTransform

 

CGFloat rotation = (kWobbleRadians * M_PI) / 180.0;

CGAffineTransform wobbleLeft = CGAffineTransformMakeRotation(rotation);

CGAffineTransform wobbleRight = CGAffineTransformMakeRotation(-rotation);

 

tempView.transform = CGAffineTransformIdentity;

 

4、UIView类中一些不常用到的内容

如:uiview.transform

5、NSObject类中一些不常用的内容

如:[NSObject cancelPreviousPerformRequestsWithTarget:self];

[self performSelector:@selector(wobblewithObject:nil afterDelay:kWobbleTime];

6、NSTimer的使用

转载地址:http://qxkoo.baihongyu.com/

你可能感兴趣的文章
Xcode项目中同一个名称不同位置 简单修改
查看>>
java设计模式-建造者模式
查看>>
oracle笔记
查看>>
ContentProvider数据更新
查看>>
Java 关于Ajax的实例--验证用户名(四)
查看>>
入字节码 -- ASM 关键接口 MethodVisitor
查看>>
如何在Centos 6 X86_64安装RHEL EPEL知识库?
查看>>
spring-util命名空间
查看>>
微信小程序周报(第四期)
查看>>
Scrapy的架构初探
查看>>
一些常用RPM Repository(RPM软件仓库)地址
查看>>
浅谈设计模式之工厂模式
查看>>
Xcode常用插件
查看>>
在北大的那些日子
查看>>
library file cell view&comparison tool
查看>>
实体 map 属性
查看>>
php设计模式--适配器模式
查看>>
最近一直很纠结,发现人真的不能认真。
查看>>
java中的枚举类 enum使用与分析
查看>>
JAVA 四大域对象总结
查看>>