Конвертировать CGPoint между iPhone и CA самолетами - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть подкласс UIView, на который я рисую PDF (используя CATiledLayer).Мне также нужно рисовать в определенной области этого PDF, однако, координатная плоскость CATiledLayer при использовании CG для рисования немного винт.

См. Изображение: alt text

У меня естьточка (200,200), которую мне нужно преобразовать в систему координат CATiledLayer, которая является 2-й плоскостью, показанной выше.Я пытался сделать это с некоторыми преобразованиями, но, похоже, ничего не работает.

Спасибо!

1 Ответ

0 голосов
/ 08 сентября 2010

Вот что я должен был сделать (используя пример точек / плоскости выше):

//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));   
...