gpt4 book ai didi

iphone - 我可以使用 contentScaleFactor 安全地节省内存吗?

转载 作者:行者123 更新时间:2023-12-01 16:58:24 24 4
gpt4 key购买 nike

我有一个应用程序,其中一部分是显示图像网格。
每个 ImageView 是 200x150,但图像本身是 1024x768。
如果我尝试只设置这些图像,很快我就会收到内存警告,甚至可能会被杀死。

另一方面,如果在代码中调整这些图像的大小非常耗费 CPU 并且需要很多时间。

现在,我观看了一个“Apple WWDC” session 的视频,那里的人提到了 UIView 的 contentScaleFactor,它负责分配用于显示 View 的实际位图内存量。

在文档中,他们只提到比例因子大于一的情况,但我关心将其设置为小于一的值:

// 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 设置为 < 1 值是否“合法”?

谢谢!

最佳答案

恐怕不会有太大帮助。问题是,UIView保留图像,无论其大小。因此,只要 View 存在,图像就会占用 RAM。 contentScaleFactor不会改变这个事实。为了真正减少内存占用,您必须在将图像分配给 UIView 之前重新采样图像。 .

但是,contentScaleFactor确实会影响用于渲染的后备存储的大小。鉴于目前只有两类 iOS 设备,并且这些设备使用 1.02.0比例因子,您可以简单地强制 contentScaleFactor成为 1.0在 Retina 设备上。请注意,它不会对其他设备执行任何操作。

关于iphone - 我可以使用 contentScaleFactor 安全地节省内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com