【问题标题】:ios issue with 3d animationsios 3d动画问题
【发布时间】:2012-05-24 14:53:03
【问题描述】:

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

    }];

}];

【问题讨论】:

    标签: ios core-animation transform layer


    【解决方案1】:

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

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

    完美运行。

    【讨论】:

      【解决方案2】:

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

      编辑:我的愚蠢....

      我的意思是this

      bottomI.orientation = UIImageOrientationDown
      

      【讨论】:

      • 你不能在 UIImage 上做 CGAffineTransformMakeRotation
      猜你喜欢
      • 2017-07-17
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多