UIView 在应用 3d 变换期间和之后变得透明

UIView becomes transparent during and after applying 3d transform

在搜索和阅读苹果文档后,我决定向那里的专家寻求帮助。我已将动画添加到我的简单 uiview 中,以将其评价为向外的法式门。它工作文件,但动画期间和之后的视图变得透明。当我对 2D 动画执行相同操作时,视图保持不透明。

如何使视图背景不透明?除了 .m34 透视之外,我是否需要设置额外的 .mxx 值

我的代码如下:

{

 [self setAnchorPoint:CGPointMake(1.5,0.5) forView:mainView];
...

 [UIView animateWithDuration:.5
                     animations: 
^{
CATransform3D leftTransform = CATransform3DIdentity;
                         leftTransform.m34 = -1.0f/500; //dark magic to set the 3D perspective
                         leftTransform = CATransform3DRotate(leftTransform, - M_PI_2/2.2, 0, 1, 0);                        
                         mainView.layer.transform = leftTransform;
 }

                     completion:^(BOOL finished) {
                         if (finished) {
                             ...
                        }
                     }];
}

将 zposition 设置为足够大的值,以便旋转的视图在层次结构中保持在它之上。

在上面的代码中,插入这段代码

mainView.layer.zPosition = -600;

这将修复动画。