我有一个很大的 UIView
。它的大小可变。它可能大于 5000x5000 size
。我使用 UIBezierPath
在其上绘制线条、圆圈。我还在上面添加了一些view
。这些 subview
中的每一个都包含 buttons
、textview
、labels
等。
我把这个主视图放在 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/