在CATransform3DRotate之后,我的一半视图消失了

时间:2013-01-28 13:28:37

标签: ios catransform3drotate

我有1个视图,在这个视图中我有1个UIImageView和UILabel,当我旋转我的视图时,一半视图消失。

这是我的代码

viewToAnimate是视图中的图像和标签。

CATransform3D _3Dt = CATransform3DRotate(viewToAnimate.layer.transform, DEGREES_TO_RADIANS(beginValue), 0.0, 1.0, 0);
_3Dt.m34 = 1.0 / -300;

viewToAnimate.layer.transform = _3Dt;

CATransform3D _scale;

if (needZoom) {
    _scale = CATransform3DScale(viewToAnimate.layer.transform , 1+scale, 1+scale, 1+scale);

    if (_scale.m11 > 1) {
        _scale.m11 = 1;
        _scale.m22 = 1;
        _scale.m33 = 1;
    }
}
else  {
    _scale = CATransform3DScale(viewToAnimate.layer.transform , 1-scale, 1-scale, 1-scale);
}

viewToAnimate.layer.transform = _scale;
//viewToAnimate.layer.zPosition = sin(DEGREES_TO_RADIANS(beginValue)*MOSAIC_WIDTH)+1;

2 个答案:

答案 0 :(得分:3)

DEGREES_TO_RADIANS的价值是多少?有没有机会M_PI / 2? 您的代码告诉您正在围绕y轴旋转。请参阅第一行中的最后3个参数:

0.0, 1.0, 0

如果你提供这个,那么这是预期的行为 - 考虑一个面向你的飞机,并想象它围绕y轴旋转+/- 90度,它肯定会消失。

答案 1 :(得分:1)

正如迭戈在另一个答案中的评论所提到的,这可能是由zPosition问题引起的。通过将它的zPosition设置为更高的值,使您的视图高于其他所有视图。