Как я могу исключить часть кода внутри основного блока анимации из анимации? - PullRequest
3 голосов
/ 27 мая 2009

У меня есть основной блок анимации, где я вызываю метод, который будет загружать контроллер представления. происходит произвольный переход между двумя контроллерами представления. Тем не менее, когда контроллер представления создает интерфейс, на все это влияет базовая анимация. Хотя это приводит к некоторым интересным эффектам, я не хочу этого;)

[UIView beginAnimations:@"jump to view controller" context:self];
[UIView setAnimationDuration:0.55];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

// some animated property-changes here...

[self loadViewControllerForIndex:targetIndex]; // everything that happens in this method shall not be animated

UIViewController *controller = [viewControllers objectAtIndex:targetIndex];
[controller viewWillAppear:YES];
[controller viewDidAppear:YES];

[UIView commitAnimations];

К сожалению, я не могу вывести эту часть из блока.

1 Ответ

10 голосов
/ 27 мая 2009

Вы должны иметь возможность подавлять анимации для раздела анимационного блока UIView, обернув этот раздел в транзакцию CAT и отключив анимации для нее:

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];    

// Changes to disable animation for here
[CATransaction commit];
...