iphone - 如果没有 View 更新,动画不会开始

标签 iphone animation uinavigationcontroller uiimageview

Sample on GitHub

我有一个奇怪的问题。

我有一个基于导航的应用程序,带有两个 UIViewController 和用于在它们之间进行转换的 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]! 如果没有更新屏幕,它不会启动 - 您可以单击底部的按钮并查看它!

这是错误吗?

动画无需自定义过渡即可工作。

当我为推送或弹出 View 设置 animated:YES 时,动画会在 View 之间进行自定义转换。

为什么? 有没有简单的方法来更新显示 View 以启动动画?

最佳答案

我认为你应该写

 [yellowBatterfly startAnimating]; 

在viewDidLoad方法中。并更改方法

viewDidAppear 到 viewWillAppear 和

viewDidDisappear 到 viewWillDisappear。

希望它能起作用......

关于iphone - 如果没有 View 更新,动画不会开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291429/

相关文章:

iphone - Storyboard可以封装吗?

iphone - OpenGL透视和光照问题

javascript - 很棒的 CSS 效果

html - 如何在悬停时使图像向上动画,同时文本向下动画?

ios - 如何在滚动时在类似于 google+ 的 tableview 中添加动画?

ios - 导航栏的标题 View 重叠

ios - UITableView、UITableViewController Detail View 和 UISegmentedControl 怎么样?

ios - 如何在 iOS 的全局变量中附加值?

ios - 通过选项卡栏设置嵌入导航 Controller 中的 View Controller 的属性

ios - 应用在待审核阶段可以修改应用截图吗?