我正在开发具有数百个背景图像的通用应用程序。为了节省磁盘空间并防止进一步的复制和磁盘垃圾邮件,我想将非视网膜@ 1x iPad图像重用为视网膜@ 2x iPhone图像。
例子:
[email protected]
background125_iPad.png
iPhone 4和5的宽高比不同,因此我将缩放1024x768图像以适合。
但是问题是,如果我在iPhone 5上使用它:
UIImage *img = [UIImage imageNamed:@"background125_iPad.png"];
然后iOS会尝试比我更聪明,并选择巨大的内存怪物@“ [email protected]”版本。
有没有一种说法:“ 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类别中,以简化使用方法:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句