ios问题与3d动画

时间:2012-05-24 14:53:03

标签: ios core-animation transform layer

我正在尝试在X轴上为UIImageView设置3D动画,以便它可以旋转180度。在90度,我想改变图像。 (这就是我在2)中“打破”动画的原因。

动画效果很好,但问题是第二张图片是颠倒的。任何想法我应该怎样做才能使图像正常?

这是我的代码

    i++;
[UIView animateWithDuration:2 animations:^{

    self.imageView.layer.transform = CATransform3DMakeRotation(-M_PI/2 , 1, 0,0);

} completion:^(BOOL finished){

    UIImage *bottomI = (UIImage *)[bottom objectAtIndex:i];
    self.second.image =bottomI;

    [UIView animateWithDuration:2 animations:^{

          imageView.layer.transform = CATransform3DMakeRotation(M_PI , 1, 0,0);

    } completion:^(BOOL finised){   

    }];

}];

2 个答案:

答案 0 :(得分:1)

我做了什么(使用分组的CABasicAnimation对象而不是视图动画,但同样的技巧应该工作)是将视图/图层旋转前90度,然后在没有动画的情况下旋转180度,然后开始下半部分动画。这样,动画的后半部分实际上会导致视图/图层的正面旋转到视图中,就好像它是背面,而不是向后。

当您切换图像并将其旋转180度时,视图/图层是查看器的边缘,因此用户无法看到这些更改。当它旋转剩余的90度时,新图像就位,它看起来露出了视图/图层的背面。

完美无缺。

答案 1 :(得分:0)

当您旋转视图时,它类似于在现实生活中旋转对象。因此,一旦旋转超过90度,它将反转物体。这就是你的第二张图像倒置的原因。最简单的方法是设置图像的仿射变换,使其旋转180度,然后再添加。

编辑:我的愚蠢......

我的意图是this

bottomI.orientation = UIImageOrientationDown