我正在开发具有数百个背景图像的通用应用程序。为了节省磁盘空间并防止进一步的重复和磁盘垃圾邮件,我想将非视网膜 @1x iPad 图像重用为视网膜 @2x iPhone 图像。
例子:
background125_iPad@2x.png
background125_iPad.png
iPhone 4 和 5 具有不同的纵横比,因此我将缩放 1024x768 图像以适应。
但问题是,如果我在 iPhone 5 上使用它:
UIImage *img = [UIImage imageNamed:@"background125_iPad.png"];
然后iOS会尝试比我更聪明,并选择巨大的内存怪物@“background125_iPad@2x.png”版本。
有没有办法说:“iOS,你看。我比你聪明。我希望你加载这个文件。我真的是指这个文件。这个文件。把它当作一个带有比例尺的@2x 版本2 的因数。”这样它真的加载了请求的“background125_iPad.png”文件,但是 UIImageView 的行为好像它有 512 x 384 点(= 1024x768 px)?
我认为
UIImage imageNamed
不是要走的路吗? 最佳答案
我认为您无法关闭该功能。
但你总是可以这样做:
UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"background125_iPad" ofType:@"png"]];
UIImage *scaledImage = [UIImage imageWithCGImage:[img CGImage]
scale:[[UIScreen mainScreen] scale]
orientation:img.imageOrientation];
这不会自动添加特定于设备的后缀。
我建议将其封装到 UIImage 类别中以方便使用:)
关于ios - 如何在 iPhone 上将 @1x iPad 图片加载为 @2x 图片?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20219090/