我正在将许多 UIView 加载到 UIScrollView 上,并试图找出它们使用这么多内存的原因。经过使用 Instruments 的排除过程后,我发现设置视图的背景颜色会增加 4 倍的内存使用量。
如果我不设置背景颜色,内存使用量约为 4.5megs。一旦我将背景颜色设置为红色或透明颜色,内存使用量就会跳至 17megs。
这是代码:
ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];
有谁知道这可能是什么原因造成的?
我真正追求的是背景清晰。如果没有办法解决这个问题,是否有另一种方法可以将 UIView 的背景设置为清晰?
UIView 的所有实例(以及从它派生的类)都有一个关联的 CALayer 对象(通过 Layer 属性访问),该对象提供 UIView 的视觉外观。 CALayer 可以拥有自己的位图,它可以与另一个 CALayer 对象共享位图(这就是反射的完成方式),或者它可以没有位图。
当 UIView 充当其他控件的容器时,它没有与其所在层关联的位图,因此它使用的内存非常少。一旦你设置了它的背景颜色,就必须创建该背景位图,以便有东西可以渲染。如果UIView子类实现drawRect来将一些图形绘制到视图中,也会发生同样的事情。
由于全屏大小的视图会消耗大量内存,因此当您实现基于 UIScrollView 的解决方案时,您应该只加载显示的视图以及两侧的视图。不要提前创建大量它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)