【发布时间】:2012-03-24 01:10:52
【问题描述】:
我有一个应用程序,其中一部分是显示图像网格。 每个 ImageView 是 200x150,但图像本身是 1024x768。 如果我尝试只设置这些图像,很快我就会收到内存警告,甚至可能会被杀死。
另一方面,如果在代码中调整这些图像的大小会耗费大量 CPU 资源并占用大量时间。
现在,我观看了一个“Apple WWDC”会议的视频,那里的人提到了 UIView 的 contentScaleFactor,它负责分配用于显示视图的实际位图内存量。
在文档中,他们只提到了比例因子大于 1 的情况,但我关心将其设置为小于 1 的值:
// Make sure not to divide by zero
if (image.size.width > 0 && image.size.height > 0)
{
CGFloat widthRatio = self.imageView.frame.size.width / image.size.width;
CGFloat heightRatio = self.imageView.frame.size.height / image.size.height;
CGFloat aspectFitRatio = MAX(widthRatio, heightRatio);
aspectFitRatio = MIN(1, aspectFitRatio);
[self.imageView setContentScaleFactor:aspectFitRatio];
}
这样我的 imageView 将分配更少的内存。
我的问题是 - 我说的对吗? 它真的会节省内存吗? 将 contentScaleFactor 设置为
谢谢!
【问题讨论】:
标签: iphone ios ipad uiview uikit