【发布时间】:2011-06-09 10:32:18
【问题描述】:
我有一个奇怪的问题。
我有基于导航的应用程序,带有两个 UIViewControllers 和用于在它们之间转换的 Curl 效果。
我添加到栏按钮并添加自定义操作:
-(IBAction)pushPage
{
NSLog(@"push page");
SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:NO];
[self.navigationController pushViewController:secondView animated:NO];
[UIView commitAnimations];
[secondView release];
}
在 SecondView 中,我有一个带有操作的按钮:
-(IBAction)back
{
[imageAnimationIssueAppDelegate backPage];
}
AppDelegate 中的方法backPage:
-(void)backPage
{
NSLog(@"backPage");
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.navigationController.view cache:NO];
[self.navigationController popToRootViewControllerAnimated:NO];
[UIView commitAnimations];
}
问题:
在 RootView 我有 UIImageView 动画:
- (void)viewDidLoad
{
[super viewDidLoad];
animImage.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"1.png"],
[UIImage imageNamed:@"2.png"],
[UIImage imageNamed:@"3.png"],
[UIImage imageNamed:@"4.png"],
[UIImage imageNamed:@"3.png"],
[UIImage imageNamed:@"2.png"],
nil];
animImage.animationDuration = 0.5;
animImage.animationRepeatCount = 0;
}
我从viewDidAppear开始:
- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"First view - viewDidAppear");
[super viewDidAppear:animated];
[animImage startAnimating];
}
我停在viewDidDisapear:
- (void)viewDidDisappear:(BOOL)animated
{
NSLog(@"First view - viewDidDisappear");
[super viewDidDisappear:animated];
[animImage stopAnimating];
}
当我从 SecondView 回来时动画停止了!但是[animImage isAnimating] 说YES!
它不会在没有更新屏幕的情况下启动 - 您可以单击底部的按钮并查看它!
是错误吗?
动画无需自定义过渡即可工作。
当我将animated:YES 设置为推送或弹出视图时,动画与视图之间的自定义转换一起工作。
为什么? 有没有简单的方法来更新显示视图以启动动画?
【问题讨论】:
标签: iphone animation uinavigationcontroller uiimageview