1

我正在尝试在 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){   

    }];

}];
4

2 回答 2

1

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

当您切换其图像并将其旋转 180 度时,视图/图层与查看器相邻,因此用户无法看到这些更改。当它旋转剩余的 90 度时,新图像就位,它似乎正在显示视图/图层的背面。

它完美地工作。

于 2012-05-25T01:21:51.790 回答
0

当您对视图进行 3d 旋转时,它类似于在现实生活中旋转对象。因此,一旦旋转超过 90 度,它就会反转对象。这就是为什么您的第二张图像是倒置的。最简单的做法是在添加之前将图像的仿射变换设置为将其旋转 180 度。

编辑:我的愚蠢....

我的本意是这样

bottomI.orientation = UIImageOrientationDown
于 2012-05-24T16:03:18.017 回答