1

我有下面的代碼,只要敲擊手勢被識別就運行。它將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) { 
         // 
        }]; 

} 
+0

你爲什麼要使用兩個動畫塊?你可以把翻譯和旋轉指令放在同一個! – iSofTom

+0

它仍然無法正常工作。 – cfischer

+0

@urimoai我發現了一些我發佈的內容提及這個...我希望這將是你.... – Spynet

回答

0

嗨,你需要這樣的代碼......

在.h文件

ü聲明一個變量CGAffineTransforminitial ....

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

    } 

這是你需要實現它的邏輯的想法....