2011-11-09 6 views
8

Sto provando ad animare il cambio di fotogramma di un UIView in cui cambiano sia l'origine che la dimensione. L'animazione non sembra liscia e ha un effetto rimbalzante. Sto usando il seguente codice per farloL'animazione del cambio di fotogramma di UIView non è omogenea, produce un effetto rimbalzante

[UIView 
    animateWithDuration:0.5 
    animations:^{ 
     self.view.frame = newFrame; 
    }]; 

Sembra che i primi cambiamenti di dimensione molto veloce e poi i cambiamenti di origine con la durata specificata dell'animazione che alla fine si traduce in un effetto rimbalzante. Come posso rendere questo aspetto liscio?

risposta

3

Nell'animare il cambio di fotogramma di ciascuna delle sottoview ha fatto la magia. Ora si anima molto bene. Grazie.

12

Si potrebbe provare a cambiare la curva di animazione, magari provare quella lineare.

dispatch_async(dispatch_get_main_queue(), ^{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
    self.view.frame = newFrame; 
    [UIView commitAnimations]; 
}); 
+0

Avevo già provato a utilizzare UIViewAnimationCurveLinear ma non ha funzionato. La dimensione viene modificata immediatamente e quindi viene attivata l'animazione per il cambio di posizione. –

+0

hai provato a utilizzare l'intero blocco di codice? L'ho appena provato - e sia la dimensione che l'origine si animano uniformemente allo stesso tempo – Mellson

+0

lo stai facendo nel thread principale giusto? – Mellson