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

时间:2014-04-09 11:48:12

标签: ios objective-c uiview uiscrollview

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

我将此主视图放在UIScrollView上。 UIScrollViewzoomable,必须非常清晰地显示内容(不应该模糊)。

目前,我绘制完整的UIView并添加到UIScrollView。问题是,由于memory

,它占用了crashingMemory Pressure Issue.太多

我应该如何处理以实现高性能?

2 个答案:

答案 0 :(得分:3)

UIView子类并在其中实现+layerClass方法:

+layerClass
{
    return [CATiledLayer class];
}

这会导致您的视图由CATiledLayer支持,而不是单个巨大的CALayer(这会占用过多的内存)。

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

答案 1 :(得分:2)

我认为您可以使用CATiledLayer来平铺,以降低内存压力,但这一切都取决于您正在加载什么,何时以及其他一些方面。 平铺是一个复杂的主题,您可以找到更多信息here