gpt4 book ai didi

iphone - 有什么方法可以强制 UIKit 在某些设备上使用标准(不是 @2x)图像,即使 @2x 图像可用?

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

我正在开发一个使用大量详细图形的项目。由于始终显示的 Sprite 、背景等数量较多,因此内存占用较大。我们使用 cocos2D 制作动画和 Sprite ,使用 UIKit 制作 UI、菜单等。

如果设备是配备视网膜显示屏的 iPod Touch,我希望能够通过强制 UIKit 使用标准分辨率图像来减少 iPod Touch 上的内存使用量(其内存比同等 iPhone 少)。我可以在 cocos2d 中设置一个标志来强制加载 SD 图像,但我还没有找到 UIKit 的类似选项或解决方法。

总而言之,该项目是一个通用二进制文件,其中包含标清和视网膜风格的所有图像,如下所示:

图片.png

image@2x.png

在 iPhone 4、4S 和 5(均配备视网膜显示屏)上,需要加载 @2x 版本图像的默认 UIKit 行为。

在 iPod Touch 第 4 代(可能还有第 5 代)上,我想强制 UIKit 加载 SD image.png 文件,即使也有 image@2x.png 文件可用。

这是为了减少这些配备视网膜显示屏的设备上的内存占用,但 RAM 仅为手机的一半。

如果有人有任何想法或解决方法来实现这一点,我将非常感激!

最佳答案

添加我的评论作为答案,

您可能必须创建自己的方法来根据设备获取图像。在这种情况下,您不应该使用 @2x 命名图像。您的方法应该根据设备和视网膜显示获取图像,并返回可用于创建 UIImage 对象的图像名称。该方法可以是在 UIImage 上添加的类别。

例如:-

[UIImage testImageNamed:@"test.png"];

并实现 testImageNamed 方法作为 UIImage 中的类别,该类别返回基于 testRetina.pngtest.png 的在设备和视网膜/非视网膜分辨率上。

更新:或者,您也可以尝试使用此类别中的 iPod touch 设备进行以下操作,以便可以使用 @2x 本身保存图像(test.png 和 test@2x.png)。我不确定这是否有效。我假设如果 fileName 只有“test”,这可能会获取 test.png 本身,但我还没有尝试过。这绝对值得一试。

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];

添加上述内容仅适用于 iPod touch,其他设备可以正常返回 [self imageNamed:@"test.png"];

关于iphone - 有什么方法可以强制 UIKit 在某些设备上使用标准(不是 @2x)图像,即使 @2x 图像可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425834/

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