首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AffineTransform a CGPoint

AffineTransform a CGPoint
EN

Stack Overflow用户
提问于 2018-03-10 22:49:20
回答 1查看 359关注 0票数 1

我整个早上都在做研究。到目前为止还没有运气。我试图围绕我的视图中心旋转一个CGPoint。

以下是我为UIBezierPath所做的工作:

代码语言:javascript
复制
CGRect bounds = self.bounds; // might want to use CGPathGetPathBoundingBox
CGPoint center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, center.x, center.y);
transform = CGAffineTransformRotate(transform, DEGREES_TO_RADIANS(degreesOfRotation));
transform = CGAffineTransformTranslate(transform, -center.x, -center.y);
currentLayer.path = CGPathCreateCopyByTransformingPath(pathTwo.CGPath, &transform);

效果很好。我找到了这篇文章,What is the best way to rotate a CGPoint on a grid?,但它只是不起作用。

我真的需要一种方法来旋转CGPoint在我的边界中心。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-11 04:26:39

计算转换的代码是正确的。您所需要做的就是将转换应用到重点上。

代码语言:javascript
复制
CGRect bounds = self.bounds;
CGPoint center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, center.x, center.y);
transform = CGAffineTransformRotate(transform, DEGREES_TO_RADIANS(degreesOfRotation));
transform = CGAffineTransformTranslate(transform, -center.x, -center.y);

CGPoint point = CGPointMake(bounds.size.width - 10, center.y);  // some point
CGPoint point2 = CGPointApplyAffineTransform(point, transform); // some point rotated about the center of the view
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49214814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档