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