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

标签 ios opengl-es uiscrollview core-graphics calayer

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

  1. 我有一个可双向滚动的 ScrollView (覆盖大部分屏幕)

  2. 这个可 ScrollView 包含很多矩形。这些矩形很难处理。用户可以修改它们、移动它们、创建和删除它们。所以理想情况下,它们都是 CALayer 或 UIView。

  3. 问题是因为可能同时显示 100 或 1000 个,CALayers 或 UIViews 可能不是很有效。

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

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

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

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

最佳答案

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

  • Cocos2D
  • 麻雀
  • 团结
  • OO龙

关于ios - 在 UIScrollView 上绘制许多形状的有效方法,可滚动和可缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27558403/

相关文章:

ios - 使用图形 API 将图像发布到 Facebook 时始终获得 "(#324) Requires upload file"

iphone - 如何在 iPhone 的 OpenGLES 中获取中点值?

ios - 当我下拉刷新我的 UIScrollView 时,它需要我下拉到屏幕中间

objective-c - UIScrollView contentSize 不起作用

ios - 如何随着滚动改变 alpha 值

ios - <img> 没有出现在 iPad 上。

ios - 设置文本字段的值时 swift 为零

iOS:使用 SharePoint Server 之前的 NTLM 身份验证

c++ - 使用带有帧缓冲区的 RGBA32F 纹理抛出 INVALID_ENUM 错误

android - eglCreateWindowSurface 因 java.lang.IllegalArgumentException 而失败