2015-02-07 74 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轴你在两个维度上的旋转视图“由内而外”同时