我想在漫长的过程(解析)完成时动画一些东西。我的准系统代码目前看起来像这样:
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()调度它自己的线程,但我不知道如何保持这个动画,直到漫长的过程完成。
感谢。
答案 0 :(得分:2)
我认为U方式可行。只是改变
some_view.transform = CGAffineTransformMakeScale(0, 0)
到:
some_view.transform = CGAffineTransformMakeScale(0.01, 0.01)
将比例值改为接近零;你可以看到动画发生。如果比例值== 0,则不会出现动画。你可以试试这个。