2010-05-29 14 views
5

Desidero animare il ridimensionamento di un UIView, ma non del suo centro: su un punto diverso.iPhone: Scala UIView su un punto specifico

Come uno sparo al buio, ho provato a tradurre la vista, ridimensionare, quindi tradurre di nuovo, utilizzando una serie di CGAffineTransforms. Ma non funziona: continua a ridimensionare il centro.

Qualcuno sa come fare?

Grazie mille.

risposta

12

Aggiungere il quadro Quartz al progetto e importare l'intestazione quarzo

#import <QuartzCore/QuartzCore.h> 

È quindi possibile impostare il punto di ancoraggio della visualizzazione (attorno al quale si basano le animazioni) esempio

myView.layer.anchorPoint = CGPointMake(0, 0); 

Nota che i punti sono valori compresi tra 0 e 1, con 0,0 di essere in alto a sinistra su iPhone

+1

perche marcatura mia risposta come risposta se fosse utile. – RunLoop

+2

Grazie mille; questo funziona davvero. Un problema di follow-up, però: quello che non ho detto è che sto usando il ridimensionamento per un effetto di "rimbalzo". La vista in questione si restringe un po ', quindi si espande alla sua dimensione normale. L'utilizzo dell'approccio "anchorPoint" riduce la visualizzazione in modo appropriato, ma quando aumento di nuovo la vista (utilizzando la matrice di identità per la trasformazione), l'intera vista si è spostata (tradotta) un po '. C'è un modo per far sì che quella vista possa essere ripristinata nella sua posizione originale in modo ripetibile, indipendente da anchorPoint? Grazie! –

+0

Ciò che potrebbe essere più semplice è semplicemente impostare le origini e le dimensioni della cornice della vista in modo da riflettere la tua estremità e il punto di partenza e includerlo in un'animazione. Ho trovato questo un approccio più semplice. – RunLoop

Problemi correlati