简单的ios动画:旋转窗口和反向

时间:2012-02-22 02:40:12

标签: ios cocoa-touch animation rotation

我正在尝试使用Cocoa执行简单的动画。按下一个按钮会使图像在其y轴上翻转,然后再次按下时会向后翻转。另一个按钮应该使窗口翻转其x轴并以相同的方式返回。图像的代码有效,而第一次按下时窗口将垂直翻转,但第二次按下则不会翻转。

y轴上的图像

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

[pic.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.y"];

[UIView commitAnimations];

x轴上的窗口

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

[window.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.x"];

[UIView commitAnimations];

我找不到问题,因为代码几乎相同。感谢帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

我设法让代码的格式略有不同。

CATransform3D flip = CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0);
if (CATransform3DEqualToTransform(window.layer.transform, flip))
{
    flip = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 0.0);
}


[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

window.layer.transform = flip;

[UIView commitAnimations];

据我所知,只要有旋转命令,它只会将窗口视为原始状态。这意味着每个新命令都要翻转,它看到它已经处于请求的位置,并没有做任何事情。一旦我意识到这一点,我只需要给它命令将它恢复正常。对我来说,为什么我的问题中的代码适用于y轴而不是x,这仍然是一个谜。