2009-02-15 6 views
1

J'ai un UIImageView simple avec une image plus grande que l'affichage (600x1400). L'image commence par Fit to Aspect, donc les limites de l'UIImgageView rapportent 320x750, plus grandes encore que l'affichage, mais c'est OK. Je connais un point (300, 150) relatif aux dimensions originales de l'image (600x1400) que je veux mettre à l'échelle et positionner. Si je configure une animation de base pour gérer la position et l'échelle (zoom, transformer) via l'animation de base, l'échelle se produit, mais je ne finis jamais au point que je veux. Au lieu de cela, il semble que je dois calculer le point basé sur l'échelle que je vais être transformé à la fois.iPhone: Positionnement d'un point sur une image à partir de n'importe quel niveau d'échelle (transformation)

Y at-il quelque chose d'évident, je suis absent? J'ai essayé d'utiliser convertPoint: toView, mais il retourne toujours le même point que je viens de lui donner.

Répondre

0

Oui, lorsque vous définissez l'origine d'une vue, vous la définissez dans l'espace des coordonnées de sa vue d'ensemble. L'aperçu ne sait rien de l'échelle de la sous-vue, donc si vous devez vous déplacer vers une coordonnée relative à la taille réduite de l'image, vous devrez mettre votre coordonnée à l'échelle. Le calcul à faire est trivial, mais vous pouvez utiliser la fonction CGPointApplyAffineTransform() pour prendre une CGAffineTransform que vous avez pu utiliser pour mettre à l'échelle votre UIImageView via sa propriété transform et l'appliquer à une coordonnée. (Aussi, rappelez-vous que la coordonnée 0,0 est dans le coin supérieur gauche sur l'iPhone.) Je ne suis pas sûr si le réglage de UIImageView pour ajuster l'échelle fera l'échelle via sa propriété de transformation ou non, mais vous pouvez facilement construire une transformation affine pour correspondre à l'échelle actuelle de votre vue. Cependant, je vous suggère de rééchantillonner votre image à une plus petite résolution pour économiser de la mémoire et améliorer les performances. 600x1400 est une assez grande image à lancer sur l'iPhone. This post a quelques conseils sur la façon de mettre à l'échelle UIImages. Si vous appliquez un facteur d'échelle connu à votre image, vous pouvez simplement appliquer ce facteur d'échelle aux composantes X et Y de la coordonnée souhaitée.

+0

Merci Brad! Ceci est passionnément proche et me pointe certainement dans la direction d'écriture. Mes points ne vont toujours pas là où je m'attends, mais je pense que c'est un problème d'espace utilisateur par rapport à l'espace périphérique, donc je travaille avec CGContextGetUserSpaceToDeviceSpaceTransform. Les mathématiques matricielles ne sont certainement pas ma force. – user66649

Questions connexes