【发布时间】:2013-04-25 01:03:24
【问题描述】:
我正在尝试停止 UIActivityIndicatorView 上的动画,方法与使用 CATransition 淡入淡出推送视图控制器的方法相同。
UIActivityIndicatorView 不会停止动画,然后淡入下一个视图控制器,而是在整个淡入淡出过程中继续设置动画,无论我设置多长时间。
任何想法如何让旋转停止,然后以相同的方法推动/淡入淡出?
- (void)pushView:(NSNotification *)notification {
[self.activityIndicator stopAnimating];
NextViewController* nextViewController = [[NextViewController alloc] init];
CATransition *transition = [CATransition animation];
transition.duration = 1.5f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:nextViewController animated:NO];
}
编辑 1
与大卫的回答相同,如果我使用 dispatch_after 并延迟了几分之一秒,我就能够成功 stopAnimating。有没有更好的方法来做到这一点?:
- (void)pushView:(NSNotification *)notification {
[self.activityIndicator stopAnimating];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.0001 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
NextViewController* nextViewController = [[NextViewController alloc] init];
CATransition *transition = [CATransition animation];
transition.duration = 1.5f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:nextViewController animated:NO];
});
}
【问题讨论】:
标签: objective-c uiactivityindicatorview catransition