0

J'ai une sous-classe UIView sur laquelle je dessine un PDF (en utilisant une CATiledLayer). J'ai également besoin de dessiner sur une région spécifique de ce PDF, cependant le plan de coordonnées de CATiledLayer lors de l'utilisation de CG pour dessiner est très vicieux.Conversion CGPoint entre plans iPhone et CA

Voir l'image: alt text

J'ai un point (200200), que je dois convertir le système de coordonnées du CATiledLayer, qui est le 2ème plan ci-dessus. J'ai essayé de le faire avec quelques transformations, mais rien ne semble fonctionner.

Merci!

Répondre

0

Voici ce que je devais faire (en utilisant l'exemple des points/plan ci-dessus):

//rotatation origin 
CGPoint rotateOrigin = CGPointMake(0,0); 
//rotatation transform 
CGAffineTransform translateTransform = CGAffineTransformMakeTranslation(rotateOrigin.x, rotateOrigin.y); 
//rotate the plane 90 degrees 
float radians = 90 * (M_PI/180); 
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(radians); CGAffineTransform customRotation = CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(translateTransform), rotationTransform), translateTransform); 

CGAffineTransform m1 = CGAffineTransformIdentity; 
CGPoint startPoint = CGPointApplyAffineTransform(CGPointMake(200,200),m1); 
//rotated point 
CGPoint rotatedPoint = CGPointApplyAffineTransform(startPoint, customRotation); 
//final rotated point- after adjusting for the rotation 
rotatedPoint = CGPointApplyAffineTransform(rotatedPoint, CGAffineTransformMakeTranslation(500,-500));