为啥这个简单的动画在 iOS 7 上不起作用?

Posted

技术标签:

【中文标题】为啥这个简单的动画在 iOS 7 上不起作用?【英文标题】:Why is this simple animation not working on iOS 7?为什么这个简单的动画在 iOS 7 上不起作用? 【发布时间】:2013-09-23 20:04:39 【问题描述】:

在我的项目中,我有一个简单的动画,我只是将视图从左向右移动。这在 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,所以任何帮助,你知道如何解决这个问题吗?

【问题讨论】:

你在使用自动布局吗? 不,我没有使用自动布局 您是否使用断点来验证代码是否已到达? 是的,我正在使用断点和 Nslogs 显示视图的新位置,但我不知道为什么没有显示任何内容 O_o? 我也有同样的问题。所有动画都不起作用。基本相同的代码。 【参考方案1】:

好的,我想我解决了。在 iOS 7 之前,可以在带有故事板的 viewDidLoad 中运行动画。如果您将动画调用移动到- (void)viewDidAppear,那么它们应该会重新开始工作。因此,在您的情况下,您需要在- (void)viewDidAppear 中调用[self showAnimation];

- (void)viewDidAppear
   [self showAnimation];

【讨论】:

感谢 jimbob 但对我不起作用,我将继续尝试寻找解决方案,我检查断点和 NSLogs,如果调用 viewDidLoad 和 viewdidapear 中的方法,并运行但不显示,我不不知道为什么? T_T 你试过使用 UIViewAnimationOptionBeginFromCurrentState 吗? Sorry Dude,不工作,对于动画,我需要 UIViewAnimationOptionRepeat,因为我需要循环或无限运行动画,同时我使用应用程序 U_U【参考方案2】:

我发现将代码放在这个方法中是可行的。

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

【讨论】:

以上是关于为啥这个简单的动画在 iOS 7 上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

文本动画在 iOS 浏览器上不起作用

为啥这个 $.post() 在 iOS 上不起作用?

Today Widget Extension 动画在 iOS 10 上不起作用

设置 UIBarButtonItem 动画在 iOS 11 上不起作用

transform:翻译动画在 iOS 15.1 设备上不起作用

React Native - panResponder 动画在 iOS 上不起作用