翻译动画在第二次点击之前被忽略

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) 
                             //
                         ];

    

这是一个想法,你需要用它来实现你的逻辑......

【讨论】:

以上是关于翻译动画在第二次点击之前被忽略的主要内容,如果未能解决你的问题,请参考以下文章

将翻译应用到根节点后第二次无法按预期工作

第二次触摸动画

Core Animation 文档翻译 (第二篇)

useState 在第二次点击时更新状态

用于翻译同形异义词的 Fasttext 对齐词向量

第二次作业