0

当一个漫长的过程(解析)完成时,我希望为一些东西制作动画。我的准系统代码目前看起来像这样:

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

谢谢。

4

1 回答 1

2

我认为U方式可以工作。只是改变

some_view.transform = CGAffineTransformMakeScale(0, 0)

至 :

some_view.transform = CGAffineTransformMakeScale(0.01, 0.01)

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

于 2015-06-15T08:37:53.597 回答