2010-11-09 5 views
1

J'ai une image (une ligne droite) et j'essaie de la faire pivoter dans un angle quelconque à partir d'un point spécifique. Ce qui se passe, c'est que l'image est tournée du point central de lui-même. Je veux un chemin à travers lequel la base de l'image reste la même et elle tourne dans l'angle que je veux, comme dans le cas d'une horloge. J'utiliseUIimageView tourne autour d'un point

Compass2.layer.anchorPoint= CGPointMake(0.5,1); 
[Compass2 setTransform:CGAffineTransformMakeRotation(XXXX)]; 

Cependant, il présente l'accès à composante inconnue « achorPoint » d'une propriété. Quelqu'un peut-il me donner quelques solutions

+1

Avez-vous fait '#import '? – Anna

Répondre

0

L'erreur que cela vous donne implique que vous essayez de définir une propriété qui n'existe pas. Avez-vous mal orthographié 'anchorPoint'? Si ce n'est pas le cas et que votre question comporte simplement une faute de frappe, vérifiez vos types. Votre 'Compass2' devrait être un UIView de quelque sorte et son 'layer' devrait être un objet CALayer.

3

Bien qu'une CGAffineTransform est juste une matrice décrivant la rotation, la translation et la mise à l'échelle.

Rappelez-vous que vous pouvez utiliser

CGAffineTransform CGAffineTransformConcat (CGAffineTransform t1, CGAffineTransform t2); 

à Enchaînez transforme. Cela signifie simplement que vous multipliez les matrices de transformation.

Donc, puisque vous le savez, la rotation standard tourne juste autour du centre de la UIImageView, vous pouvez briser votre tâche en 3 parties,

  1. déplacement dans le point de rotation
  2. tourner
  3. mouvement retour

et les enchaîner. Je n'ai pas testé ce code, mais vous devriez obtenir une solution de cette manière.

EDIT: J'ai également réalisé que je n'avais pas utilisé la concaténation. Vous devez utiliser la concaténation si vous utilisez "CGAffineTransformMake ...". Je viens de mettre les fonctions les unes dans les autres.

2

J'ai eu le même problème. Comme l'a fait remarquer "aBitObvious", vous devez importer l'infrastructure QuartzCore pour accéder à la propriété anchorPoint de la classe CALayer.

#import <QuartzCore/QuartzCore.h> 
0

Vous ne pouvez pas être en mesure d'accéder à la propriété Anchorpoint pour la vue en tout importer

#import <QuartzCore/QuartzCore.h> 

-à-dire;

Compass2.layer.anchorPoint= CGPointMake(0.5,1); 

Pour cela, vous devez écrire l'instruction d'importation suivante au début du fichier d'implémentation.

#import <QuartzCore/CALayer.h> 

Maintenant, vous serez en mesure d'écrire le code suivant sans générer d'erreurs.

Compass2.layer.anchorPoint= CGPointMake(0.5,1); 
Questions connexes