代码之家  ›  专栏  ›  技术社区  ›  Dave Chenell

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

  •  1
  • Dave Chenell  · 技术社区  · 11 年前

    我有一个滑块,在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(连续:否),它仍然有同样的效果。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Yogi    11 年前

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