我对可可很陌生,但是想知道如何更改CALayer的坐标系。我阅读了《 Core Animation编程指南》中的文章Layer Geometry and Transforms,但仍需要一些实用建议。

默认坐标系在左下角具有(0,0)。我想将其更改为图层的中心。那可能吗?

我尝试的方法:使用CATransform3DTranslate作为sublayerTransform到图层框架的MidX和MidY,子图层显示在正确的位置。然后,在setFrameSize事件中,应重新计算转换并再次应用转换。我想自动刷新(没有“步骤”)。

还是应该使用kCAConstraintMidX将子层MidX关联到层MidX并使用偏移量?实际上,我将CATextLayers用作子层,并希望将文本居中对齐,从而将文本的中心相对于超级层的中心定位。我试过了,但是当我调整超级图层的大小时,它似乎并没有自动刷新。

最佳答案

查看执行此操作的Apple示例代码oalTouch。

// Convert the view point to our layer / sound stage coordinate system, which is centered at (0,0)
CGPoint pointInLayer = CGPointMake(pointInView.x - [self frame].size.width / 2., pointInView.y - [self frame].size.height / 2.);

10-05 22:06