我有一个UIScrollView,其中包含一个“绘图视图”,用户可以用手绘制UIBezierPath。它使用CATiledLayer,因此我可以在不模糊的情况下进行缩放。
当我绘制路径时,尽管多次调用笔划,但没有EXC_BAD_ACCESS错误。但是,当我使用CGAffineTransForm转换路径时,它会在路径被描边时抛出EXC_BAD_ACCESS错误之前持续不到几秒钟。它还可以通过视觉创造人工制品。
我确信这与CATiledLayer不喜欢翻译有关,因为当我停止使用CATiledLayer时,没有任何问题 - 路径按预期转换,没有人工制品。但是,我需要CATiledLayer进行缩放而不会模糊(据我所知,除了将contentcalefactor设置为缩放级别之外,没有其他解决办法)。
抛出错误时内存/ CPU使用率没有异常。
值得注意的是,我正在使用iOS 11和Xcode 9测试版。 (编辑:也发生在iOS 10上,但仍然使用相同的Xcode 9 Beta)
我尝试打开僵尸对象,但它没有提供任何有用的信息。
答案 0 :(得分:0)
CATiledLayer
使用多个线程来绘制内容。许多UIKit操作需要从主线程完成。保持平铺图层优势的最佳方法应该是使用核心图形路径而不是UIKit路径。另请参阅Technical Q&A 1637。