第一次制作动画很奇怪

时间:2017-09-13 23:48:18

标签: ios swift

我正在使用以下内容为gradientView输入/输出设置动画:

func hideOrShowGradientView(hide: Bool) {
    UIView.animate(withDuration: 0.4, animations: {
        self.gradientView.isHidden = hide
    })
}

这很有效,但是第一次没有动画。它出现了。在第二次和第三次它非常有效。我试过在主线程上调用animate块,但没有运气。为什么这个动画不能在第一次也是第一次出现?我应该使用其他动画方法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过调用self.view.layoutIfNeeded()。它会强制视图及其子视图立即完成其中任何待处理的动画,这可能会干扰您的动画。您可以像这样使用它:

func hideOrShowGradientView(hide: Bool) {
    self.view.layoutIfNeeded()
    UIView.animate(withDuration: 0.4, animations: {
        self.gradientView.isHidden = hide
        self.view.layoutIfNeeded()
    })
}

Apple建议两次调用layoutIfNeeded(),一次在动画块之前强制重绘视图及其子视图,并在视图上完成任何待处理的动画而不等待下一个更新周期,并将其称为第二次在动画块内,以确保动画更改将立即应用。

答案 1 :(得分:0)

我在init方法的主线程上进行了太多操作,只在第一次显示视图时才调用它。将不必要的初始化移动到视图中确实出现了