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