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

我有一个大的UIView 。 它的大小可变 它可能大于5000×5000 size 。 我使用UIBezierPath绘制线条,圆圈。 我也加了一些view 。 每个subview包含buttonstextview subviewlabels

我把这个主视图放在UIScrollViewUIScrollView是可zoomable ,必须非常清晰地显示内容(它不应该变得模糊)。

目前,我绘制完整的UIView并添加到UIScrollView 。 问题在于,由于Memory Pressure Issue.Memory Pressure Issue.过多, crashing Memory Pressure Issue.

我应该如何处理以达到高性能?

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

 +layerClass { return [CATiledLayer class]; } 

这会导致您的视图被CATiledLayer支持,而不是一个巨大的CALayer (这会消耗太多的内存)。

然后你只需在你的自定义视图类中实现-(void)drawRect:(CGRect)rect ,并在那里完成所有的绘图。 我最近在我的项目中使用UIScrollViews来滚动一个可以大到10000 x 150000的区域。

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