【问题标题】:Animation doesn't start without view update没有视图更新动画不会开始
【发布时间】:2011-06-09 10:32:18
【问题描述】:

Sample on GitHub

我有一个奇怪的问题。

我有基于导航的应用程序,带有两个 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


    【解决方案1】:

    我觉得你应该写

     [yellowBatterfly startAnimating]; 
    

    在 viewDidLoad 方法中。并从

    更改方法

    viewDidAppear 到 viewWillAppear 和

    viewDidDisappear 到 viewWillDisappear。

    希望它会起作用......

    【讨论】:

      【解决方案2】:

      我认为您必须使用以下方法在视图上执行动画:

      [UIView commitAnimations]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多