Ho un UIView personalizzato per mostrare un'immagine affiancata.Ridimensionamento UIView durante l'animazione
- (void)drawRect:(CGRect)rect
{
...
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context,
CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
CGContextDrawTiledImage(context, imageRect, imageRef);
...
}
Ora sto cercando di animare il ridimensionamento di quella vista.
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
// change frame of view
[UIView commitAnimations];
Quello che mi aspetto è per l'area piastrellata solo a crescere, lasciando la piastrella formati costante. Quello che succede invece è che mentre l'area cresce, il contenuto originale della vista viene ridimensionato alla nuova dimensione. Almeno durante l'animazione. Quindi all'inizio e alla fine dell'animazione tutto va bene. Durante l'animazione le tessere sono distorte.
Perché la CA sta tentando di scalare? Come posso impedirgli di farlo? Cosa mi sono perso?
Sembra correlato alla modalità di contenuto della vista. Ma impostarlo su UIViewContentModeLeft non lo risolve davvero. Non è più scalabile, ma si apre immediatamente alla nuova dimensione del fotogramma. Impostarlo su UIViewContentModeRedraw non sembra richiamare affatto drawRect durante l'animazione. – tcurdt