2015-02-07 72 views
0

我正面臨這個奇怪的問題,其中CGAffineTransformMakeScale導致旋轉。名字暗示它應該只會導致縮放,但事實並非如此。CGAffineTransformMakeScale導致旋轉

[UIView animateWithDuration:1.0 animations:^{ 
     self.logoView.transform = CGAffineTransformMakeScale(6.0, 6.0); 
    } completion:^(BOOL finished) { 
     if (finished) { 
      [UIView animateWithDuration:3.0 animations:^{ 
       self.logoView.transform = CGAffineTransformMakeScale(-6.0, -6.0); 
      } completion:nil]; 
     } 
    }]; 

我認爲該視圖應該縮放6倍和縮小6倍。但是,第二個動畫會引起圖像的90度逆時針旋轉!任何人都可以解釋發生了什麼?

回答

1

使用相對縮放轉換而不是絕對轉換。所以:

self.logoView.transform = CGAffineTransformScale(self.logoView.transform, 6, 6)

1

你不應該擴展到CGAffineTransformMakeScale(-6.0,-6.0)爲了扭轉你已經做了(除非這就是你想要的,但我對此表示懷疑),而是動畫回到CGAffineTransformMakeScale(1.0,1.0)。一個快捷方式是CGAffineTransformIdentity常量,這是一個空變換。因此,在完成塊的最後一行改爲

self.logoView.transform = CGAffineTransformIdentity; 

解釋什麼目前正在進行,將比例調整爲在X爲負值和Y軸你在兩個維度上的旋轉視圖「由內而外」同時