后台线程完成后的动画(iOS / Swift)

时间:2015-06-15 05:17:23

标签: ios multithreading swift animation animatewithduration

我想在漫长的过程(解析)完成时动画一些东西。我的准系统代码目前看起来像这样:

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()调度它自己的线程,但我不知道如何保持这个动画,直到漫长的过程完成。

感谢。

1 个答案:

答案 0 :(得分:2)

我认为U方式可行。只是改变

some_view.transform = CGAffineTransformMakeScale(0, 0)

到:

some_view.transform = CGAffineTransformMakeScale(0.01, 0.01)

将比例值改为接近零;你可以看到动画发生。如果比例值== 0,则不会出现动画。你可以试试这个。