我正面临这个奇怪的问题,其中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度!谁能解释一下发生了什么?
答案 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轴上缩放到负值,您可以将视图转向“内外”。在两个维度同时