当一个漫长的过程(解析)完成时,我希望为一些东西制作动画。我的准系统代码目前看起来像这样:
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)
}
}
}
很明显,动画不会发生。UI 刚刚更新到最后阶段。线程处理的正确方法是什么(我知道 animateWithDuration() 调度是它自己的线程,但我不知道如何保持这个动画,直到漫长的过程完成。
谢谢。