0

代码太大,无法在此处发布。我的问题如下。当我调用animateWithDuration:animations:completion:(可能带有选项)时duration == 0.3,并不意味着将通过相同的延迟调用完成块。它是通过 2 秒调用的,对我来说太长了。

这种大延迟通常出现在内存警告之前,但有时可能会按预期工作。

任何人都可以解释可能导致这种奇怪行为的原因吗?

4

3 回答 3

0

是否涉及任何计时器,例如动画计时器触发的?当我的动画被定时器触发时,我遇到了类似的问题。原来动画不止一次开始了。animationOngoing 标志阻止动画在完成之前再次开始。

// Timer function
    func timerTextToggle(timer: NSTimer) {
    if self.animationOngoing == false {
        self.flipAnimation()
    }
}

// Animation function
func flipAnimation() {
// important note: it's UIViewAnimationOptions,
// not UIViewAnimationTransition
    self.animationOngoing = true
    if self.animationToggle == false {
        UIView.transitionFromView(self.singleTapLabel!,
            toView: self.doubleTapLabel!,
            duration: animDuration,
            options: UIViewAnimationOptions.TransitionFlipFromBottom,
            completion: {
                (value: Bool) in
                self.animationOngoing = false
        })
    } else {
        UIView.transitionFromView(self.doubleTapLabel!,
            toView: self.singleTapLabel!,
            duration: animDuration,
            options: UIViewAnimationOptions.TransitionFlipFromTop,
            completion: {
                (value: Bool) in
                self.animationOngoing = false
        })
    }
    self.animationToggle = !self.animationToggle
}
于 2015-07-29T15:19:13.447 回答
0

我遇到了与此类似的问题,尽管没有有关您的方案的更多信息,但我不知道这是否也适用于您的问题。

becomeFirstResponderUITextField我的animateWithDuration:delay:options:animations:completion. 日志显示完成块被及时调用,但键盘需要几秒钟才能显示。这仅在首次启动键盘时发生。

这个答案帮助我解决了这个问题......原来这与iOS模拟器有关。当我不调试应用程序时,这个问题并没有发生......另一个在模拟器中追逐一个实际上不存在的错误几个小时的经典示例。

于 2015-08-26T18:08:33.887 回答
0

此问题的原因已查明。UIWebView它是在主线程中呈现的大量对象。而且似乎不可能阻止它们的加载。无论如何,时间分析器显示即使它们在屏幕上不可见,也会花费大量时间来渲染它们。是的,由于要求,我无法在内存警告事件之前释放它们

于 2015-08-31T07:47:38.203 回答