In una delle mie viste ho bisogno di animare la proprietà frame di un UIImageView e mentre lo faccio voglio mostrare una barra di avanzamento (UIProgressView) nella vista titolo della barra di navigazione. Il problema è se commento i seguenti blocchi di animazione, la barra di avanzamento viene aggiornata come previsto senza problemi. D'altra parte, a causa dell'animazione seguente, la barra di avanzamento si arresta in punti diversi e riporta di nuovo l'incremento.animateWithDuration: corrompe progress progress smooth
//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];
}];
}];
blocchi animazione non bloccano il filo principale, ma ciò nessuna indicazione essere la ragione di beahviout unsmooth di th progresso?
UPDATE: Ciò che voglio ottenere è l'animazione della bolla MessageApp in IOS.While il messaggio digitato diventa una bolla e vola al suo posto la barra di avanzamento dovrebbe aumentare lentamente.
Se provo la stessa cosa con la progressbar di animazione, gli incrementi normali.
Solo una supposizione sfrenata, la ragione potrebbe essere che si sta aggiornando l'interfaccia utente non dal thread principale. –
Un'altra ipotesi selvaggia, ma hai controllato che nessuno del tuo codice nei 3 metodi chiamati da questo codice blocca il thread principale? – jhilgert00
E sto solo provando a escludere tutto qui, ma di solito uso i float reali nel mio codice di animazione, cioè 0.0f rispetto a 0. – jhilgert00