为什么这个简单的动画在iOS 7上不能工作?

7

在我的项目中,我有一个简单的动画,我只是将一个视图从左移动到右。这在iOS 6中运行良好,但在iOS 7中运行时没有任何效果。有人知道为什么吗?如果动画很简单,我该如何在iOS 7中修复它?我的代码如下:

- (void) showAnimation
 {
    if (IS_IPAD())
    {
       [UIView animateWithDuration:50.0f 
                             delay:1
                           options:UIViewAnimationOptionRepeat
                        animations:^{
                                         ViewBOLIVIA.frame = CGRectMake(1024,0,  ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
                                    } completion:nil];
    }
    else
    {
        if (IS_IPHONE_5)
        {
            [UIView animateWithDuration:50.0f 
                                  delay:1 
                                options:UIViewAnimationOptionRepeat 
                              animations:^{
                                               ViewBOLIVIA.frame = CGRectMake(568,0,  ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
                                          } completion:nil];
        }
        else
        {
             [UIView animateWithDuration:50.0f 
                                   delay:1 
                                 options:UIViewAnimationOptionRepeat
                              animations:^{
                                               ViewBOLIVIA.frame = CGRectMake(480,0,  ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
                                          } completion:nil];
        }
    }
 }

我已经更新了,正在使用Xcode 5和iOS 7,各位能帮忙看看吗?你们知道如何解决这个问题吗?


1
你正在使用自动布局吗? - Gabriele Petronella
不,我没有使用自动布局。 - user_Dennis_Mostajo
你是否使用断点来验证代码是否被执行到了? - bneely
是的,我正在使用断点和Nslogs来显示视图的新位置,但我不知道为什么它没有显示任何东西O_o? - user_Dennis_Mostajo
1
我有同样的问题。没有任何动画在工作。基本上是相同的代码。 - jimbob
显示剩余2条评论
2个回答

16

好的,我认为我解决了它。在iOS 7之前,在storyboard中运行动画没有问题。如果您将动画调用移动到- (void)viewDidAppear,那么它们应该能够再次正常工作。因此,在您的情况下,您需要在- (void)viewDidAppear中调用[self showAnimation];

- (void)viewDidAppear{
   [self showAnimation];
}

感谢jimbob,但这不适用于我,我将继续尝试找到解决方案,我使用断点和NSLogs进行检查,如果在viewDidLoad和viewDidAppear中调用该方法,则可以运行但不显示,我不知道为什么?T_T - user_Dennis_Mostajo
你尝试过使用UIViewAnimationOptionBeginFromCurrentState吗? - jimbob
抱歉哥们,不起作用。对于动画,我需要使用UIViewAnimationOptionRepeat,因为我需要在循环或无限运行动画同时使用应用程序U_U。 - user_Dennis_Mostajo

0

我发现将代码放在这个方法中可以起作用。

-(void)viewDidAppear:(BOOL)animated {
    menuView.alpha = 0;
    topLabel.alpha = 0;
    [UIView animateWithDuration:1.5 animations:^{
       menuView.alpha = 1;
       topLabel.alpha = 1;
    }];
   [super viewDidAppear:animated];
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接