我目前有一个免费的手绘 iPad 应用程序,它通过 touches 方法中的四边形曲线将线条添加到可变路径,然后在新区域上调用 setNeedsDisplayInRect。
问题是当绘图(路径)变得相当大时,重绘需要更长的时间,并开始陷入困境。以及每当用户更改画笔大小或颜色时,它都会在重绘时将其应用于先前绘制的路径的重叠部分。
为了解决这个问题,我在 touchesEnded 的后台线程中调用 renderInContext,并将它与绘图视图后面的 imageview 中的另一个 UIImage 合并。然后清除绘图视图。
这也有帮助,因此当用户点击保存时,绘图通常已经在单个 UIImage 中呈现 - 准备就绪。
这在其他设备上运行良好,但在 iPad 3 视网膜显示屏上,性能非常糟糕,并且当用户在快速绘图时多次抬起手指时往往会崩溃。
我正在寻求有关处理此类情况的最佳实践的任何类型的建议?除了添加额外的视图以在后台渲染以防止主线程和后台线程一次访问相同的视图 - 这听起来相当 hack-ish - 我觉得我正在打败一匹死马?