UIView анимация не работает для подкласса UIViewController - PullRequest
0 голосов
/ 04 февраля 2012

Я пытаюсь добавить подпредставление (которое является подклассовым представлением UIViewController, состоит из нескольких UIButton и UILabels) к текущему представлению, но анимация не работает, подпредставление просто появилось без анимации.

код:

[UIView beginAnimations:nil context:nil];
[UIView setAnimaitonCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDuration:0.5f];
[UIView setAnimationTransition:transition forView:thisPersonViewController.view cache:YES];
[self.view addSubView:thisPersonViewController.view];
[UIView commitAnimations];

это просто не работает, но если я изменю параметр forView с подпредставления (thisPersonViewController.view) на self.view , self. взгляд оживил, вот это и есть любопытство.

Моя версия xcode - 4.2, а версия SDK - 5.0, спасибо всем, кто предлагает решение!

=========== СЛЕДУЮЩИЙ КОД работает нормально ===============

CATransition *trans = [CATransition animation];
[trans setDuration:0.4f];
[trans setType:kCATransitionReveal];
[trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[thisPersonViewController.view layer]addAnimation:trans forKey:kCATransitionReveal];
[self.view addSubview:thisPersonViewController.view];

Другой раздражающий вопрос: если я изменю тип CATransition на kCATransitionFromBottom или что-то еще, анимация снова не будет работать!

1 Ответ

1 голос
/ 04 февраля 2012
  1. Добавьте thisPersonViewController.view в качестве подпредставления с позицией где-то за пределами экрана.(т. е. координаты кадра x / y прямо внизу экрана.)

  2. Сделайте это:


[UIView animateWithDuration:0.5f delay:0.0f options:UIViewAnimationCurveLinear animations:^(void)
{
    // Move it to wherever you want to have it.
    thisPersonViewController.view.frame = CGRectMake(0.0f, 0.0f, thisPersonViewController.view.frame.size.width, thisPersonViewController.view.frame.size.height);
}
completion:^(BOOL finished)
{
    // Do something when it completes the animation if you so desire.
}];

...