我正在为我的UITabBar制作图片。我将它们制作成60x60的尺寸,因为这是视网膜屏幕使用的大小。然而,当我使用这个尺寸时,在选项卡栏中显示出来太大了,所以你只能看到图像的一部分。当我将其缩小到30x30时,它可以正常显示,但这个大小应该是非视网膜显示器使用的。为什么在我使用60x60时它不能正确显示?
我正在为我的UITabBar制作图片。我将它们制作成60x60的尺寸,因为这是视网膜屏幕使用的大小。然而,当我使用这个尺寸时,在选项卡栏中显示出来太大了,所以你只能看到图像的一部分。当我将其缩小到30x30时,它可以正常显示,但这个大小应该是非视网膜显示器使用的。为什么在我使用60x60时它不能正确显示?
你可能需要将视网膜图片重命名为imagename@2x.png
。
您遇到此问题的原因是提供了高分辨率图像,而iOS正在寻找标准分辨率图像。
iOS会根据设备的分辨率自动选择适当的图像尺寸。因此,您需要为非Retina设备提供“标准分辨率”图像,并为Retina显示器提供“高分辨率”图像。在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"
您可以通过苹果开发者网站了解更多相关信息:优化高分辨率