CATransform3DMakeRotation在动画期间隐藏了UIView的一半

时间:2012-10-29 21:57:02

标签: ios xcode interface-builder core-animation catransform3drotate

使用以下带有CATransform3DMakeRotation的UIView动画,一半的UIView将在转换过程中消失,并在完成时重新出现。这只发生在界面构建器的视图层次结构中的UIView后面的UIImageView时。

[UIView animateWithDuration:1.0 delay:0.0 options:nil animations:^{
        myView.layer.transform = CATransform3DMakeRotation(M_PI,0.0,1.0,0.0);
    } completion:nil];

以下是界面构建器

中的视图布局

Interface Builder layout

以下是动画结果。

enter image description here

第二张图像在任何动画发生之前,左半部分消失。缩小后,然后越过中心点,右侧(前一个左侧)重新出现,如第四张图所示。

使用

设置背景图像时
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"jeans.png"]];

动画按预期完成。

1 个答案:

答案 0 :(得分:27)

为了记录,答案在我的评论中

imageView.layer.zPosition = -400;

或者你可以做

myView.layer.zPosition = 400; // or some number greater than width/2

看起来旋转视图的一部分被背景视图遮挡。由于它围绕其中心点旋转,因此它的一部分进入负z空间,因此在背景后面。

所以来自

------- imageView
------- myView

     / myView
    /
------- imageView
  /
 /