Удалить UIVIew из SuperView с анимацией - PullRequest
7 голосов
/ 10 марта 2009

Я могу анимировать добавление UIView в свое приложение, оно выглядит очень красиво, так что, спасибо, яблоко.

Однако, как мне анимировать удаление этого вида из суперпредставления?

Я использую:

CATransition *animation = [CATransition animation];
[animation setDuration:1];
[animation setType:kCATransitionReveal];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myview layer] addAnimation:animation forKey:kCATransitionReveal];

чтобы оживить "входящий" переход ... как вы оживляете "выходной" переход ????

1 Ответ

25 голосов
/ 10 марта 2009

Анимируйте ваш вид, чтобы он перемещался за пределы экрана / сжимался / расширялся / исчезал, а затем выполнял фактическое удаление по окончании анимации.

Вы можете сделать это, изменив свойства представления (позиция / размер / смещение) между блоком beginAnimations / commitAnimations. UIKit будет затем анимировать эти свойства в течение указанного времени.

Например, что-то вроде;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.30f];
view.transform = 
  CGAffineTransformMakeTranslation(
    view.frame.origin.x, 
    480.0f + (view.frame.size.height/2)  // move the whole view offscreen
  );
background.alpha = 0; // also fade to transparent
[UIView commitAnimations];

В уведомлении о завершении анимации вы можете затем удалить представление.

...