2012-05-24 60 views
1

我想3D在U轴上动画UIImageView,因此它会做180度旋转。在90 degres我想改变图像。 (这就是为什么我在2)“打破”了动画。与3D动画ios问题

动画效果很好,但问题在于第二张图像是上下颠倒的。任何想法我应该怎么做的图像被绘制正常?

这里是我的代码

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){ 

    }]; 

}]; 

回答

1

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

当您切换图像并将其旋转180度时,视图/图层对观察者是边缘的,因此用户无法看到这些更改。当它旋转剩余的90度时,新图像就位并且它看起来正在显露视图/图层的背面。

它完美的作品。

0

当你的3D旋转视图,它类似于现实生活中的旋转对象。所以,一旦旋转超过90度,它会颠倒物体。这就是为什么你的第二张图像被倒置。做最简单的事情是设置仿射变换的图像180度旋转,它在加入之前

编辑:我的愚蠢....

是我的本意是this

bottomI.orientation = UIImageOrientationDown 
+0

你不能在UIImage上做CGAffineTransformMakeRotation – user1078065