Завершите рендеринг 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 (непрерывно: НЕТ), и он все еще имеет тот же эффект.


person Dave Chenell    schedule 17.09.2013    source источник


Ответы (1)


Вы можете вызвать анимацию с помощью функции, которая выполняется в отдельном потоке. Варианты многопоточности — NSThread и GDC. В настоящее время пользовательский интерфейс блокируется, поскольку основной поток занят выполнением запрошенной анимации (функции), поэтому пользовательский интерфейс обновляется после полного выполнения функции.

person Yogi    schedule 17.09.2013
comment
Отлично, спасибо, я проверил этот ответ, и это помогло. stackoverflow.com/questions/4360591/ - person Dave Chenell; 17.09.2013