我的应用在iOS6上运行良好,但在某个我因为NDA原因不能透露名称的未来版本的iOS中,所有UIViewController
过渡动画都停止工作,新视图就立即弹出。我不确定这个未具体说明的iOS未来版本是否是原因,因为我也曾经看到这种情况在iOS6上偶尔出现。
有时动画会在一段时间内开始工作,然后很快停止,这使我认为这可能是某种内存警告问题,但我的应用程序最多只使用相当合理的约125MB的RAM。有人能提供任何建议或要调查的事项吗?
我的应用在iOS6上运行良好,但在某个我因为NDA原因不能透露名称的未来版本的iOS中,所有UIViewController
过渡动画都停止工作,新视图就立即弹出。我不确定这个未具体说明的iOS未来版本是否是原因,因为我也曾经看到这种情况在iOS6上偶尔出现。
有时动画会在一段时间内开始工作,然后很快停止,这使我认为这可能是某种内存警告问题,但我的应用程序最多只使用相当合理的约125MB的RAM。有人能提供任何建议或要调查的事项吗?
dispatch_async
来更新UI。以下是苹果开发者论坛上关于此问题的一个不错的解决方案:
按照以下步骤操作:
[UIView setAnimationsEnabled:YES]
动画又开始工作了。我怀疑这要么是iOS7的一个bug,要么是我的代码中有一个动画或UIViewController
启动正在发生在后台线程上,导致动画停止。可能与未来版本的iOS无关。
DispatchQueue.main.async{
//UI related code eg:
self.label.text = "abc"
self.button.setTitle("xyz",.normal)
self.tableView.reloadData()
}
如果您没有捕获主线程动画可能会无法正常工作。 但是,如果您使用主线程动画将绝对有效。
在 API 响应上更新 UI 的正确代码:
Alamofire.getApiCall(paramaters: parameters, completion:{
response in
// UI related code.
DispatchQueue.main.async{
self.label.text = "abc"
self.button.setTitle("xyz",.normal)
self.tableView.reloadData()
}
})
不正确的代码可能导致动画停止,并导致奇怪的崩溃:
Alamofire.getApiCall(paramaters: parameters, completion:{
response in
// UI related code.
self.label.text = "abc"
self.button.setTitle("xyz",.normal)
self.tableView.reloadData()
})