编辑:
想象一下,我从事重新实现 CoreText 的业务。
我会在这里得到一个 NSString,它是一个有序的代码点列表,还有一组字形(一个 NSFont/CTFont),基本上是一个 CGPathRef 列表。
中间的东西负责布局。
并且某种环境必须提供一个 CGGraphicContext 来渲染。
我必须显示的对象类型是CGPath。我担心为每个 CGPath 创建一个 UIView!对于一个文本块,您不会为每个字符字形创建一个 UIView,对吗?
我有一组潜在的大(小)对象要一次绘制。在 1000 年代。许多将在屏幕外,直到滚动到视图中。
一方面,看起来我最好的选择是为每个创建一个 UIView。原因是:
通过适当的平铺,我可以确保屏幕外的视图大部分时间都不在内存中,并在需要时恢复活力
更重要的是,在缩放时,我想将每个此类视图的图层 contentScale 设置为 zoomFactor,这样我仍然可以获得完整的精度,而不是模糊的楼梯
另一方面,我不知道(否则完全通用的)父视图将如何处理 1000 个子视图。所以我很想重新考虑我的代码,使“孩子”成为单一视图的一个区域。但后来我开始考虑设置该视图的图层 contentScale 并且我担心在缩放时会耗尽内存:我不知道图层机制是否“聪明”到不会创建一个巨大的支持位图,而它的大部分内容是反正看不见
怎么办,怎么办?
有人有什么经验想分享吗?