0
我正在寻找一个长的过程(解析)完成时的一些事情动画。我的准系统代码目前看起来像这样:后台线程完成后的动画(iOS/Swift)
func run_on_background_thread(code:() -> Void)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), code)
}
func run_on_main_thread(code:() -> Void)
{
dispatch_async(dispatch_get_main_queue(), code)
}
func manage_response()
{
run_on_background_thread
{
long_process()
run_on_main_thread
{
UIView.animateWithDuration(animation_duration, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.8, options: UIViewAnimationOptions.CurveEaseInOut, animations:
{
some_view.transform = CGAffineTransformMakeScale(0, 0)
}, completion: nil)
}
}
}
很明显,动画不会发生。界面只是更新到最后阶段。什么是线程这(我知道animateWithDuration()派遣的它自己的线程的正确方法,但我不知道如何,直到漫长的过程完成后持有该动画。
感谢。
这可以解决缩放问题,但存在的情况是位置动画发生在一帧中,而不是通过持续时间。 – Ryan
U可以完成一些代码并删除视图。 – Zhengjie
是的,我计算并实现了这一点。我认为你不了解这个问题;如果在完成块内部,例如我有: self.some_subview.center.y + = some_constant也会存在不一致的问题(意味着竞争条件) – Ryan