15

在我的 iOS 资源文件夹中,我有图像:

foo~iphone.png
foo@2x~iphone.png
foo~ipad.png
foo@2x~ipad.png

我加载它们:

NSString *fileName = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];

实验上:

在 iPhone 上,filenameis/path/to/bundle/foo~iphone.png和在视网膜 iPhone 上,它加载@2x版本。

在 iPad 上,filenameis /path/to/bundle/foo~ipad.png,在视网膜 iPad 上,它加载@2x版本。

也就是说,它加载了我希望的图像,但pathForResource处理了设备修改器,并imageWithContentsOfFile处理了比例修改器。

我想知道为什么。的文档没有说明pathForResource设备修饰符,而文档没有说明imageWithContentsOfFile缩放修饰符。

是否有单独的文档准确说明每个功能的作用?

4

1 回答 1

14

的解释imageWithContentsOfFile相关文档中,而不是在UIImage文档本身中:

在具有高分辨率屏幕的设备上,imageNamed:、imageWithContentsOfFile: 和 initWithContentsOfFile: 方法会自动查找名称中带有 @2x 修饰符的请求图像的版本。如果它找到一个,它会加载该图像。如果您不提供给定图像的高分辨率版本,图像对象仍会加载标准分辨率图像(如果存在)并在绘图期间对其进行缩放。

加载图像时,UIImage 对象会根据图像文件的后缀自动将 size 和 scale 属性设置为适当的值。对于标准分辨率图像,它将 scale 属性设置为 1.0,并将图像大小设置为图像的像素尺寸。对于文件名中带有 @2x 后缀的图像,它将 scale 属性设置为 2.0 并将宽度和高度值减半以补偿比例因子。这些减半的值与您需要在逻辑坐标空间中用于渲染图像的基于点的尺寸正确相关。”

我不知道哪个文档解释了pathForResource.

于 2012-12-21T14:56:44.380 回答