翻译动画在第二次点击之前被忽略
Posted
技术标签:
【中文标题】翻译动画在第二次点击之前被忽略【英文标题】:Translation animation being ignored until second tap 【发布时间】:2012-09-20 12:13:08 【问题描述】:只要识别出点击手势,我就会运行以下代码。它将 UIImageView 移动到点击位置并旋转 UIImageView。
但是,翻译动画永远不会在第一次点击时运行。我做错了什么?
-(void) onTap:(UITapGestureRecognizer *)tap
CGPoint point = [tap locationInView:self.view];
[UIView animateWithDuration:1.2
delay:0
options:0
animations:^
self.icon.center = point;
completion:^(BOOL finished)
//
];
[UIView animateWithDuration:1.2
delay:0
options:0
animations:^
self.icon.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI);
completion:^(BOOL finished)
//
];
【问题讨论】:
你为什么使用两个动画块?您可以将平移和旋转指令放在同一个中! @urimoai 我发现了一些我发布的东西参考了这个......我希望这对你...... 【参考方案1】:您好,您需要这样的代码...
在.h文件中你声明一个CGAffineTransform
变量说initial
....
在viewDidLoad
你需要通过这个存储初始变换值...
initial=self.icon.transform;
那你需要把你的方法改成这种类型……
-(void) onTap:(UITapGestureRecognizer *)tap
CGPoint point = [tap locationInView:self.view];
[UIView animateWithDuration:1.2
delay:0
options:0
animations:^
self.icon.center = point;
completion:^(BOOL finished)
//
];
[UIView animateWithDuration:1.2
delay:0
options:0
animations:^
if (self.icon.transform.a == initial.a)
self.icon.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI);
else
self.icon.transform = initial;
completion:^(BOOL finished)
//
];
这是一个想法,你需要用它来实现你的逻辑......
【讨论】:
以上是关于翻译动画在第二次点击之前被忽略的主要内容,如果未能解决你的问题,请参考以下文章