我正在为我的 UITabBar 制作图像。我正在制作尺寸为 60x60 的它们,因为这是视网膜屏幕使用的。但是,当我使用该尺寸时,它在栏中显示太大,因此您只能看到图像的一部分。当我将其缩小到 30x30 时,它可以工作,但该尺寸应该适用于非视网膜显示器。为什么当我使用 60x60 时它不能正确显示?
问问题
24428 次
2 回答
13
您可能必须将您的视网膜图像重命名为imagename@2x.png
.
于 2013-09-06T14:36:35.500 回答
6
你得到这个行为是因为你提供了一个高分辨率的图像,而 iOS 正在寻找一个标准分辨率的图像。
iOS 会根据访问设备的分辨率自动为您选择合适的图像尺寸。因此,您将负责为非视网膜设备提供“标准分辨率”图像,并为视网膜显示器提供“高分辨率”图像。在 iOS 中执行此操作的方法是将“@2x”附加到文件名的末尾,但在文件扩展名之前,如下所示:
my-image.png // for non-retina displays (Ex: 30x30 dpi)
my-image@2x.png // for retina displays (Ex: 60x60 dpi)
my-image@3x.png // for retina displays(plus editions) (Ex: 90x90 dpi)
然后,当您在 XCode 项目中引用文件时,您只需提供标准分辨率的文件名(例如,“my-image.png”),如果访问设备有视网膜显示器,那么XCode 将自动选择后缀为“@2x”的文件。这非常方便,因为它使我们开发人员不必检测设备是否具有视网膜显示器,以及我们需要提供哪种图像。
这是一个代码示例:
// Select an image named "my-image.png"
UIImage *img = [UIImage imageNamed:@"my-image.png"];
// If the device this code is run on is a retina device,
// then Xcode will automatically search for "my-image@2x.png" and "my-image@3x.png"
// otherwise, it will use "my-image.png"
您可以通过 Apple 开发者网站阅读有关该主题的更多信息:优化高分辨率
于 2014-09-01T12:33:04.290 回答