2013-09-23 43 views
7

在我的项目中,我有一个简单的动画,我只是从左到右移动一个视图。这在iOS 6中运行良好,但是当我在iOS 7中运行时,它不会执行任何操作。有人知道为什么吗?如果动画非常简单,我该如何解决这个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

您使用的是自动布局吗? –

+0

不,我没有使用自动布局 –

+0

您是否使用了断点来验证代码是否已达到? – bneely

回答

16

好的,我想我解决了它。在iOS 7之前,可以在viewDidLoad中使用故事板运行动画。如果您将动画调用移动到- (void)viewDidAppear那么他们应该再次开始工作。所以在你的情况下,你会想要拨打[self showAnimation];- (void)viewDidAppear

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

感谢jimbob但不适合我,我会继续努力寻找解决方案,我检查断点和NSLogs,如果在viewDidLoad和viewdidapear中调用方法,并且运行但不显示,我不知道为什么? T_T –

+0

你尝试过使用UIViewAnimationOptionBeginFromCurrentState吗? – jimbob

+0

对不起,老兄,对于动画,我需要UIViewAnimationOptionRepeat,因为我需要一个循环或无限运行动画,同时我使用应用程序U_U –

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]; 
} 
相关问题