В одном из моих представлений мне нужно анимировать свойство кадра UIImageView, и при этом я хочу показать индикатор выполнения (UIProgressView) в заголовке панели навигации. Проблема заключается в том, что если я прокомментирую следующие блоки анимации, индикатор выполнения обновляется, как и ожидалось, плавно. С другой стороны, из-за следующей анимации индикатор выполнения останавливается в нескольких местах и снова увеличивается.
//add message bubble
[UIView animateWithDuration:0.3
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
animationBubbleImageView.alpha = 1;
}
completion:^(BOOL finished)
{
[self removeAutoCorrectionAndHighlight];
[UIView animateWithDuration:0.3
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
CGRect bubbleFrame = CGRectMake(animationBubbleImageView.frame.origin.x,
animationBubbleImageView.frame.origin.y,
bubbleSize.width,
bubbleSize.height);
[animationBubbleImageView setFrame:bubbleFrame];
messageLabel.alpha = 1;
}
completion:^(BOOL finished)
{
[self sendSubviewToBack:textView];
[self.delegate moveBubbleToTableCell];
}];
}];
блоки анимации не блокируют основной поток, но что может быть причиной негладкого отображения прогресса?
ОБНОВЛЕНИЕ: то, чего я хочу добиться, — это анимация пузыря MessagesApp в IOS. Пока напечатанное сообщение становится пузырьком и летит на свое место, индикатор выполнения должен медленно увеличиваться.
Если я попытаюсь сделать то же самое без анимации, индикатор прогресса будет увеличиваться нормально.
UIViewAnimationOptionAllowUserInteraction
или увеличение продолжительности анимации (0,3). - person Nate   schedule 08.02.2013