Половина моего взгляда исчезает после 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 ответа

Решение

Какова стоимость DEGREES_TO_RADIANS? Это случайно не M_PI/2? Ваш код говорит, что вы вращаетесь вокруг оси Y. Смотрите последние 3 параметра в первой строке:

0.0, 1.0, 0

Если вы предоставляете это, то это ожидаемое поведение - рассмотрите плоскость, обращенную к вам, и представьте, что она поворачивается вокруг оси y на +/- 90 градусов, она обязательно исчезнет.

Как упоминалось в комментарии Диего к другому ответу, это может быть вызвано проблемами zPosition. Сделайте ваш вид выше всех остальных, установив для его zPosition более высокое значение.

Другие вопросы по тегам