ios - 在 UIScrollView 上显示大型 UIView 的最佳方式是什么?

标签 ios objective-c uiview uiscrollview

我有一个很大的 UIView。它的大小可变。它可能大于 5000x5000 size。我使用 UIBezierPath 在其上绘制线条、圆圈。我还在上面添加了一些view。这些 subview 中的每一个都包含 buttonstextviewlabels 等。

我把这个主视图放在 UIScrollView 上。 UIScrollView可缩放 并且必须非常清晰地显示内容(它不应该变得模糊)。

目前,我绘制了完整的UIView 并添加到UIScrollView 上。问题是,由于内存压力问题,它占用了过多的内存崩溃

我应该如何处理这个问题以实现高性能?

最佳答案

继承 UIView 并在其中实现 +layerClass 方法:

+layerClass
{
    return [CATiledLayer class];
}

这会导致您的 View 由 CATiledLayer 支持,而不是一个巨大的 CALayer(在该大小下会消耗太多内存)。

然后您只需在您的自定义 View 类中实现 -(void)drawRect:(CGRect)rect 并在其中完成所有绘图。我最近不得不在我的项目中执行此操作,该项目使用 UIScrollViews 滚动一个可以大到 10000 x 150000 的区域。

关于ios - 在 UIScrollView 上显示大型 UIView 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961577/

相关文章:

ios - Alamofire "installation"不工作(嵌入式二进制文件中的红色文本)

ios - 在 iOS 中构建高级均衡器

objective-c - 无法将自定义 View 从 nib 加载到另一个以编程方式制作的 View 中?

iphone - int 和++new 每次都加 2

ios - 在 Storyboard中使用自动布局使 UIButtons 居中

ios - 使用 swift 在 UIView draw() 中绘制渐变

ios - DetailViewController 上的标题

ios - 在uitableview中选择时更改自定义单元格图像颜色吗?

iphone - 将 UIScrollView 与 UIView subview 连接起来

ios - -[UIViewController_keyboard] : unrecognized selector sent to instance 0x7b731ac0