2010-05-29 9 views
5

Je souhaite animer la réduction d'un UIView, mais pas son centre: un point différent.iPhone: Echelle UIView sur un point spécifique

En tirant dans l'obscurité, j'ai essayé de traduire la vue, de la mettre à l'échelle, puis de la traduire en utilisant une série de CGAffineTransforms. Mais ça ne marche pas: ça balance encore autour du centre.

Quelqu'un sait-il comment faire?

Merci beaucoup.

Répondre

12

Ajouter le cadre Quartz à votre projet et importer l'en-tête de quartz

#import <QuartzCore/QuartzCore.h> 

Vous pouvez ensuite définir le point d'ancrage de votre point de vue (autour de laquelle les animations sont basées), par exemple

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

Notez que les points sont des valeurs comprises entre 0 et 1, avec 0,0 étant en haut à gauche sur l'iPhone

+1

S'il vous plaît envisager de marquer ma réponse comme une réponse si elle a été utile. – RunLoop

+2

Merci beaucoup; cela fonctionne en effet. Un problème de suivi, cependant: ce que je n'ai pas dit, c'est que j'utilise la mise à l'échelle pour un effet de "rebond". La vue en question rétrécit un peu, puis revient à sa taille normale. L'utilisation de l'approche "anchorPoint" réduit la vue de manière appropriée, mais quand je repasse à nouveau la vue (en utilisant la matrice d'identité pour la transformation), la vue entière a bougé (traduite) un peu. Y a-t-il un moyen pour que cette vue soit restaurée à son emplacement d'origine d'une manière répétable et indépendante de point d'ancrage? Merci! –

+0

Ce qui peut être plus simple consiste simplement à définir les origines et les tailles de l'image de votre vue pour refléter votre point de départ et de départ et l'inclure dans une animation. J'ai trouvé cela une approche plus facile. – RunLoop

Questions connexes