UiView.animateWithDuration 不为 Swift3 设置动画

Posted

技术标签:

【中文标题】UiView.animateWithDuration 不为 Swift3 设置动画【英文标题】:UiView.animateWithDuration Not Animating Swift3 【发布时间】:2017-01-12 01:09:44 【问题描述】:

我正在尝试使用以下代码从底部为所有视图插座设置动画(插座应来自底部并在 1 秒内填充视图)。但是,它没有动画,无论我投入多少时间,一切都会立即显示出来。我注意到以下内容:

不遵守时长 甚至不考虑延迟

动画没有发生。组件立即显示

覆盖 func viewDidAppear(_ animated: Bool)

    super.viewDidAppear(animated);
UIView.animate(withDuration: 1, animations: 

    self.topConstraint.constant = 0;
    self.imageView.frame.origin.y = 1024;
    self.view.setNeedsLayout();
)

【问题讨论】:

1.没用,2。1-2秒,3。我已经知道了。谢谢 【参考方案1】:

我自己解决了这个问题。

super.viewDidAppear(animated);

    UIView.animate(withDuration: 1, animations: 
        self.topConstraint.constant = 0;
        self.view.layoutIfNeeded()
        self.imageView.frame.origin.y = 1024;
        self.view.setNeedsLayout();
    )
    

【讨论】:

【参考方案2】:

需要去掉self.imageView.frame.origin.y = 1024;,在动画块前设置self.topConstraint.constant = 1024;

【讨论】:

以上是关于UiView.animateWithDuration 不为 Swift3 设置动画的主要内容,如果未能解决你的问题,请参考以下文章