当前位置: 首页 > 知识库问答 >
问题:

iOS7动画块未被调用

阎俊英
2023-03-14

我有以下代码在我的应用程序中动画一些视图:

void (^animate)() = ^() {
    CGRect leftFrame = centerFrame;
    leftFrame.origin.x -= centerFrame.size.width;
    newViewController.view.frame = centerFrame;
    oldViewController.view.frame = leftFrame;
};

if (animated) {
    [UIView animateWithDuration:0.3f
                          delay:0.0f
                        options:nil
                     animations:animate
                     completion:^(BOOL finished){}];
} else {
    animate();
}

这在iOS 6上可以正确设置动画,但在iOS 7上没有动画。奇怪的是,块内的代码确实会被调用,视图也会更新,只是没有考虑动画持续时间。

这个街区没有被呼叫有什么原因吗?

共有3个答案

云新知
2023-03-14

我在iOS6和iOS7之间有完全相同的回归。

在我的例子中,这是因为在屏幕上显示其动画的UIView之前调用了动画宽度:。

在iOS7中,您似乎不应该在之前调用AnimateSusDuration:-(ululi)viewDidear:(BOOL)在控制UIViewController上调用动画

柴英锐
2023-03-14

您的动画可能与另一个竞争动画块发生冲突,可能是UIKit在转换期间调用的动画块。不要将nil传递给动画选项,而是使用:

UIViewAnimationOptionOverrideIn0016 edOptions|UIViewAnimationOptionStart inFromMONtState

看看这是否有帮助。

西门安宁
2023-03-14

我有同样的问题:在iOS6中像魅力一样工作的动画块在iOS7中没有动画的情况下执行

不确定这是否会对您有所帮助,但我将动画触发器移动到viewDidPresar:,现在它正在制作动画。

所以对你来说,这可能是这样的:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    animate();
    // do your other stuff here...
}
 类似资料:
  • 我在我正在开发的应用程序中发现了一个奇怪的错误。在我进入细节之前,我将陈述我的问题 1-为什么不能调用UIView动画完成块 2-为什么在显示模式视图后会调用UIView动画完成块? 我有一系列UIView动画,它们在视图控制器出现后开始。他们有完成块。绝大多数情况下,动画完成块都会被调用。但每隔一段时间,应用程序就会进入一种状态,完成块不会被调用。 此外,当我从当前视图控制器模态地呈现一个新的视

  • 每当此动画结束时,我都会尝试调用一个方法,但在某些情况下,例如,当用户离开应用程序时,它的完成块永远不会被调用。此外,当VC与UIView动画同时出现时,完成块永远不会被调用。 即使动画以某种方式中断,我应该如何确保调用回调?我是否应该根本不使用UIView动画完成块,而是使用其他内容?请开导我。。!

  • 我有一个用于交互式过渡的自定义动画师。还有一个,根据过渡进度设置为。效果的动画代码如下: 我通过调用它,当从它到第一个的转换开始时,它在第二个上调用。 然而,我这里有一个问题。在动画结束之前调用完成块。当我第一次运行转换(没有取消它)时,它工作得很好,但在随后的运行过程中,它就不工作了。 我也曾尝试将动画添加到我的动画师中,但也没有成功。 此外,当我取消转换时,在实际动画结束之前调用完成块(在这种

  • 我不知道如何在iOS7中设置NSLayoutConstraint动画持续时间。这是我的代码:

  • 当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。

  • 问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C