如何从CATiledLayer中删除那些旋转文物?

Fel*_*oux 6 iphone cocoa-touch quartz-graphics catiledlayer

我有一个CATiledLayer,我在其中使用以下方法呈现内容

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
Run Code Online (Sandbox Code Playgroud)

我使用QuartzDemo代码绘制模式.这非常有效,直到我将旋转变换应用于图层的parentLayer(UIView):

非旋转CATiledLayer

旋转:

旋转的CATiledLayer

当我开始在CATiledLayer中绘制线条和文本时,这些锯齿形伪影变得更糟.

我按如下方式应用了变换(我也尝试在视图本身上使用仿射变换):

self.containerView.layer.transform = CATransform3DMakeRotation(angleRadians, 0.0f, 0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)

我转换了containerView而不是图层本身,因为我在该视图中有多个图层,我希望在不改变相对位置的情况下同时旋转.

我在过去旋转UIImageViews时没有遇到任何问题.

有没有办法可以在没有这些问题的情况下旋转CATiledLayer?

任何帮助将不胜感激.

此致,

费利克斯

Fel*_*oux 3

我发现解决这个问题的唯一方法是:

  1. 将图层绘制到位图上下文中
  2. 将该上下文的 CGImageRef 设置为图层内容