在UIScrollView上绘制许多形状的有效方法,可滚动和缩放



我正在开发各种iOS应用程序,我需要具有以下功能的界面:

  1. 我有一个滚动视图(覆盖大部分屏幕(,可以双向滚动

  2. 此可滚动视图包含许多矩形。这些矩形很难处理。用户可以修改它们,移动它们,创建和删除它们。因此,理想情况下,他们将是所有CALayers或UIViews。

  3. 问题是因为一次显示可能有 100 或 1000 个,CALayers 或 UIViews 可能效率不高。

  4. 滚动视图可能比屏幕尺寸本身大 10-20 倍。并完全覆盖着这些形状。因此,当用户滚动时,它不应该在滚动完成后看到任何闪烁或形状出现。例如,如果我使用 CATiledLayer 和用户滚动,您可以看到滚动完成后绘制的内容。

  5. 平滑缩放。缩小尤其具有挑战性,因为需要在将要变得可见的视图部分上绘制形状。另外,理想情况下,我宁愿不使用CGAffineTransform之类的东西来执行缩放,我喜欢有一个像素精确的缩放。

我已经尝试了各种方法,但即使在iPhone 6上,我似乎也无法获得像样的帧速率。甚至尝试绘制每一帧,但它太昂贵了 核心图形 无法处理它。是否有代码示例有人试图做类似的事情或开源库?我尽量不使用OpenGL,我觉得这是矫枉过正,但如果有必要,我会尝试一下。仅供参考,我还没有OpenGL的经验。

适用于iPad的Procreate完美地完成了我想要做的事情,它反应灵敏,缩放像素准确。我知道他们使用OpenGL,我不是在制作绘图应用程序。我之所以提到它,是因为它表明我正在尝试做的事情是可能的。

我认为您需要从UIKit迁移到某些2d或3d引擎:

  • 可可圈2D
  • 麻雀
  • 统一
  • 乌龙茶

最新更新