在调用CPU密集型任务之前完成UISlider渲染

时间:2013-09-17 05:03:48

标签: ios objective-c cocoa-touch uislider

我在TouchUpInside和TouchUpOutside上有一个滑块,调用方法blurPhoto

- (IBAction)blurPhoto:(id)sender {

    //perform CPU intense blur

     //fade blured image back in
     [UIView transitionWithView: mImageView
                  duration:0.9f
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    mImageView.image = completedBlur;
                } completion:NULL];
}

但是,滑块在模糊完成之后(大约需要1-2秒)才能完成最终渲染,从而形成一个跳跃的粘滑滑块和糟糕的用户体验。在调用此函数之前,如何确保滑块已完成渲染到最终位置?

编辑:我也尝试过使用ValueChanged(连续:NO),它仍然具有相同的效果。

1 个答案:

答案 0 :(得分:2)

您可以使用在单独的线程中执行的函数来调用动画。线程选项是NSThread和GDC。目前,当主线程忙于执行所请求的动画(功能)时,UI被阻止,因此一旦完全执行该功能,UI就会被更新。