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

时间:2014-12-19 01:10:00

标签: ios opengl-es uiscrollview core-graphics calayer

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

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

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

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

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

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

  6. 我尝试了各种各样的东西,但是我甚至无法在iPhone 6上获得不错的帧率。即使尝试绘制每一帧,但是处理它的Core Graphics太贵了。是否有人试图做类似的事情或开源库的代码示例?我试图不使用OpenGL,我觉得这有点矫枉过正,但如果必须,我会尝试。仅供参考,我还没有OpenGL的经验。

    Procreate for iPad完成了我想做的事情,它的超级响应和缩放像素精确。我知道他们使用的是OpenGL而我不是在制作绘图应用程序。我提到它的原因是因为它显示了我正在尝试做的事情。

1 个答案:

答案 0 :(得分:1)

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

  • 的Cocos2D
  • 麻雀
  • 统一
  • 乌龙茶