Я недавно опубликовал свою проблему, но не получил ответ ни здесь, ни где-либо еще, и я не могу найти свой пост снова ...
В любом случае, я хочу попытаться прояснить свою точку зрения, надеясь, что в этот раз вы сможете мне помочь.
Часть кода, о которой идет речь, выглядит следующим образом:
CABasicAnimation *animation = nil;
CATransform3D transform;
animation = [CABasicAnimation animationWithKeyPath:@"transform"];
transform = CATransform3DMakeRotation(1.57f, 0.0f, 1.0f, 0.0f);
value = [NSValue valueWithCATransform3D:transform];
[animation setToValue:value];
[animation setAutoreverses:YES];
[animation setDuration:0.5f];
[[shieldView layer] addAnimation:animation forKey:@"180"];
Что происходит, у меня есть UIImageView с изображением в нем. Я беру этот вид и поворачиваю его вокруг оси z на пол-оборота (1,57 по дуге).
Теперь есть еще один вид, перекрывающийся с тем, который трансформируется в 3d. Это приводит к моей проблеме: как только преобразование выполнено, преобразованный слой отсекается от перекрывающегося вида, но это неправильно, так что вы видите «мерцающий» эффект для обоих видов.
Теперь я не знаю, почему это происходит. Я ожидал бы, что представление будет анимировано надлежащим образом, без этой «ошибки», и представления будут просто отображаться правильно…, поскольку я не делаю ничего особенного.
Я пытался наложить 2D-преобразования, используя контекст «beginAnimations» и «commitAnimations», который отлично работает. Это означает, что проблема как бы скрыта в трехмерном вращении моего просмотра.
Ребята, у вас есть какие-нибудь подсказки по этому поводу? Надеюсь, я объяснил это достаточно хорошо.