我有一个很大的UIView
。它的大小可变。它可能大于5000x5000 size
。我使用UIBezierPath
在其上绘制线条,圆圈。我还在其上添加了一些view
。这些subview
中的每一个都包含buttons
,textview
,labels
等。
我将此主视图放在UIScrollView
上。 UIScrollView
为zoomable
,必须非常清晰地显示内容(不应该模糊)。
目前,我绘制完整的UIView
并添加到UIScrollView
。问题是,由于memory
crashing
和Memory Pressure Issue.
太多
我应该如何处理以实现高性能?
答案 0 :(得分:3)
UIView子类并在其中实现+layerClass
方法:
+layerClass
{
return [CATiledLayer class];
}
这会导致您的视图由CATiledLayer
支持,而不是单个巨大的CALayer
(这会占用过多的内存)。
然后,您只需在自定义视图类中实现-(void)drawRect:(CGRect)rect
,然后在那里完成所有绘图。最近我必须在我的项目中执行此操作,该项目使用UIScrollViews滚动可以大到10000 x 150000的区域。
答案 1 :(得分:2)
我认为您可以使用CATiledLayer
来平铺,以降低内存压力,但这一切都取决于您正在加载什么,何时以及其他一些方面。
平铺是一个复杂的主题,您可以找到更多信息here