iphone - 如何从我的 CATiledLayer 中删除这些旋转伪影?

标签 iphone cocoa-touch quartz-graphics catiledlayer

我有一个 CATiledLayer,我通过以下方法在其中渲染内容

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

我使用 QuartzDemo 代码绘制了一个图案。在我将旋转变换应用于图层的parentLayer(UIView)之前,这种方法效果很好:

Non-Rotated CATiledLayer

旋转:

Rotated CATiledLayer

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

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

self.containerView.layer.transform = CATransform3DMakeRotation(angleRadians, 0.0f, 0.0f, 1.0f);

我变换containerView而不是图层本身,因为我在该 View 中有几个图层,我想同时旋转它们而不改变相对位置。

我过去旋转 UIImageView 时没有遇到问题。

有没有办法可以旋转 CATiledLayer 而不会出现这些问题?

任何帮助将不胜感激。

你的,

菲利克斯

最佳答案

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

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

关于iphone - 如何从我的 CATiledLayer 中删除这些旋转伪影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590470/

相关文章:

objective-c - 选项卡栏 Controller - 选项卡栏首次无法设置纵向背景图像

cocoa - 禁用quartz 2d 中的颜色校正

iphone - CALayer alpha 蒙版不起作用

ios - 二进制量化CGImage(主要是亮图像还是暗图像)

ios - 如何为包括iPhone X在内的所有设备设置导航栏背景图片?

iphone - 如何将 UIVIewController 设置为 RootViewController?

ios - Obj-C 在主视图 Controller 中启动应用程序时崩溃

objective-c - 如何在导航栏的后退按钮上放置一个 View ?

iphone - 是否可以通过 iPhone 中的网络应用程序上传照片?

iPhone css 悬停,迫使我添加触摸事件