【发布时间】:2017-09-14 21:08:07
【问题描述】:
我有这个动画块
UIView.animate(withDuration: 0.5, animations: {
self.holdingView.alpha = .5
}, completion: { (complete) in
if complete {
self.holdingView.removeFromSuperview()
}
})
}
但无论出于何种原因,在运行 iOS 9.3.5 的 iphone 和 itouch 上都不会调用完成处理程序,但奇怪的是,它会在运行 iOS 9.3.5 的 iPad Mini 上调用。
这很难调试,因为我在控制台中没有收到任何错误。此外,在所有 iOS 版本 > 9.3.5
上都会调用完成处理程序任何帮助或见解将不胜感激。
【问题讨论】:
-
是完成处理程序没有被调用还是
complete属性不是true的问题? -
在
(complete) in下方/之后以及if complete { ... }块之外编写一个打印语句,例如print("completion executed", complete)。打印语句将 1. 打印“完成执行”文本,2. 将为您提供complete的值。如果complete为假,则表示您的动画尚未完成,因此不会触发您的 if 语句中的代码。 -
你需要在主线程上,所以我猜你是从后台线程调用它。
-
@rmaddy 未调用完成处理程序。我已经在动画闭包中设置了断点并且运行良好,并且在完成处理程序中设置了断点,但它从未达到那个点。另一件奇怪的事情是,这个问题似乎非常特定于设备和操作系统。在运行高于 9 的 iOS 的任何设备上一切正常,在运行 iOS 9 的 iPad 上运行良好。但此问题仅在运行 iOS 9.3.5 的 iPhone 和 iTouch 中存在。想知道这是否是已知问题。
-
你能在模拟器中重现这个吗?
标签: ios iphone swift animation uiview