同一动画块中的两个属性更改具有不同的持续时间。为什么?

时间:2010-10-21 15:01:59

标签: iphone animation uiview ios

在以下UIView动画块中,我执行了CGAffineTransformMakeScaleCGAffineTransformMakeRotation,虽然duration设置为1.0f,,但规模确实很高快速,旋转在1秒钟内完成。

一定是我对如何应用AffineTransforms缺乏了解,但我无法理解。

是什么给出了?

编辑:弗拉基米尔的回答很有效。我两次更改同一属性,而不是更改两个属性。要对transform属性进行两项更改,您必须使用初始更改生成transform,然后将第二项更改添加到transform,然后设置对象的transform从那里。这样,您可以根据需要将多个链接在一起。


CGColorRef color = [[colorArray objectAtIndex:colorIndex] CGColor];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];
[[self layer] setFillMode:kCAFillModeForwards];
[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];
[[self layer] setBackgroundColor:color];
[UIView commitAnimations];

1 个答案:

答案 0 :(得分:2)

[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];

第2行会覆盖第1行的效果。您应构建整个转换,然后将其应用于您的视图:

CGAffineTransform tr = CGAffineTransformMakeScale(2.0f,2.0f);
tr = CGAffineTransformRotate(tr, M_PI/4);
[self setTransform: tr];