为了更好地让您了解我的意图,想象一下我在图层上画了一个点。当我放大时,我希望该点变成一个星号。当我缩小时,我希望星号回到原来的点。现在想象一下我有数百个这样的点。
单个图层重绘与多个预先绘制的图层
我已经尝试使用两个单独的预先绘制的图层,当缩放改变时,我只需隐藏一个并显示另一个,而不是拥有1个单一的图层进行重绘。
[layer configureWithZoom:zoom];
[layer setNeedsDisplay];
对比
layer1.hidden = (zoom == DEFAULT_ZOOM);
layer2.hidden = (zoom != DEFAULT_ZOOM);
我知道有很多图层会增加我的内存占用,如果以前有50个图层,现在有100个。但就性能而言,这样做会有帮助吗?
隐藏 vs 删除
考虑到上述情况,我现在有一些不需要一直存在的图层。是将这些图层隐藏还是删除比较好呢?
当我想让它消失时,是设置layer.hidden = YES
还是使用[layer removeFromSuperlayer]
?
当我想让它重新出现时,是设置layer.hidden = NO
还是使用[superlayer addSublayer:layer]
?
如果我隐藏了一个图层,但是对超级图层进行动画处理,那么在动画期间因为子图层被隐藏而导致性能受损吗?这种性能损失与添加/删除子图层相比如何?
父图层 vs 直接分层
拥有单独的图层的问题之一是现在我需要编写代码将它们作为一个整体进行管理。以前只需简单地更改图层的位置,例如layer.position = newCoordinates;
。现在我需要执行以下操作:
layer1.position = newCoordinates1;
layer2.position = newCoordinates2;
我决定简化这个过程,创建一个父层并将layer1和layer2添加到其中。现在我的主层只需要操作父层而不是单独的层。我的父层还会处理显示或隐藏这两个层的逻辑。
然而,这现在引入了第三个层(一开始我们有1个,现在有3个)。我想知道一个除了其子层之外没有任何实际绘图的层是否会对性能产生影响。换句话说,一个空的层是否与直接将这两个子层添加到超级层中相比,会有性能损失。
感谢您提供的任何指导。