CATransform3DMakeRotation возвращает представление назад - PullRequest
1 голос
/ 25 мая 2010

У меня есть этот класс просмотра. Он добавляет подпредставления к себе, а затем я хочу сделать CATransform3DMakeRotation для одного из них (последний добавлен с addSubiew). Он на вершине, но как только анимация начинается, она находится под видом oder. Вот мой код CATransform3DMakeRotation:

    CABasicAnimation *topAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
topAnim.duration=3.3;
topAnim.repeatCount=0;
topAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.0, 0, 0, 0)];
float f = DegreesToRadians(180);  // -M_PI/1;
topAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(f, 1,1, 0)];
//topAnim.delegate = self;
topAnim.removedOnCompletion =NO;
topAnim.fillMode = kCAFillModeForwards;
[[KuvertLasche layer] addAnimation:topAnim forKey:@"flippy"];

Что я делаю не так? Изменить: Это представление в подпредставлении с кучей других представлений:

  • self.view
  • letterView (с 3 подпредставлениями. Наверху - KuvertLasche)

если я возьму его из letterView и поместлю его в self.view над letterView, он пройдет половину пути, а затем перейдет под другие представления. Очень странно. Любой совет?

1 Ответ

5 голосов
/ 25 мая 2010

Если я правильно вас понимаю, при запуске анимации части вашего вида исчезают при других видах. Это происходит потому, что вращение, которое вы применяете, происходит в трехмерном направлении вокруг диагональной линии на полпути между осями X и Y. Когда ваше представление перевернется в трехмерном виде, часть его будет физически ниже, чем другие виды.

Чтобы предотвратить это, вы можете изменить положение в Z других представлений, установив для свойства zPosition их слоя достаточно большое положительное значение или установив для zPosition слоя этого представления большое отрицательное (если мои знаки ошибочно принимаются за Core Animation Z).

Примером этого для слоя вашего вида будет

KuvertLasche.layer.zPosition = -30.0f;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...