swift animateWithDuration 在 iOS 7 中不起作用

Posted

技术标签:

【中文标题】swift animateWithDuration 在 iOS 7 中不起作用【英文标题】:swift animateWithDuration not working in iOS 7 【发布时间】:2015-01-12 17:29:05 【问题描述】:

我有一个在 ios 8.1 中运行良好的动画,但在 iOS 7.1 中,按钮只是出现在它应该没有动画的位置。

按钮的前导、尾随和底部约束为 0,高度约束为 80。这些约束在情节提要中设置。

在 viewWillAppear 方法中,我将底部约束更改为 -80,这样一开始就看不到它。

当用户按下按钮时,按钮应该动画起来,我运行这个方法:

func animateCtaUp() 
    self.ctaView.layoutIfNeeded()
    UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseOut, animations: 
            self.ctaViewBottomConstraint.constant = 0
            self.ctaView.layoutIfNeeded()
        , completion:  finished in

    )

【问题讨论】:

“不工作”是什么意思?什么都没有发生? 按钮只是出现在它应该没有动画的地方 当我在控制器的 self.view 中放置一个按钮时,该代码对我来说很好。什么是 ctaView?是按钮的超级视图吗? 是的。唔。你知道为什么它不能在 iOS 7.1 中运行吗? 【参考方案1】:

基本上有 2 个错误。

第一个是:我有一个没有布局约束的视图。当我添加它们时,其中一个动画开始运行。

第二个错误是:我在打电话

self.ctaView.layoutIfNeeded()

我应该打电话

self.view.layoutIfNeeded

【讨论】:

以上是关于swift animateWithDuration 在 iOS 7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用 animateWithDuration 淡化 CAGradientLayer

在 Swift 中使用 animateWithDuration 自定义 UIViewController 转换

UiView.animateWithDuration 不为 Swift3 设置动画

当使用动画块内函数的参数时,Swift 无法解析 UIView.animateWithDuration 中的 CurveEaseIn

swift animateWithDuration 在 iOS 7 中不起作用

Swift:缺少参数的参数