CGAffineTransformMakeScale导致旋转

时间:2015-02-07 10:16:37

标签: ios objective-c

我正面临这个奇怪的问题,其中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度!谁能解释一下发生了什么?

2 个答案:

答案 0 :(得分:1)

使用相对缩放变换而不是绝对变换。所以:

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

答案 1 :(得分:1)

你不应该扩展到 CGAffineTransformMakeScale(-6.0,-6.0)以反转你已经做过的事情(除非那是你想要的,但我怀疑它),而是动画回到 CGAffineTransformMakeScale(1.0,1.0)。快捷方式是 CGAffineTransformIdentity 常量,这是一个空变换。因此,将完成块中的最后一行更改为

self.logoView.transform = CGAffineTransformIdentity;

解释目前正在进行的工作,通过在x和y轴上缩放到负值,您可以将视图转向“内外”。在两个维度同时