UITabBarItem图像大小

我正在为我的UITabBar制作图片。 我制作的尺寸是60×60,因为那是视网膜屏幕所使用的。 然而,当我使用这个尺寸的时候,它在条上显示得太大,所以你只能看到图像的一部分。 当我把它缩小到30×30时,它可以工作,但是这个尺寸应该是用于非视网膜显示的。 为什么我使用60×60时不能正常显示?

您可能需要将您的视网膜图像重命名为imagename@2x.png

当iOS正在寻找标准分辨率的图像时,您正在获得这种行为,因为您正在提供高分辨率的图像。

iOS根据访问设备的分辨率自动select合适的图像大小。 因此,您将负责为非视网膜设备提供“标准分辨率”图像,为视网膜显示器提供“高分辨率”图像。 在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将自动select带有“@ 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" 

您可以通过苹果开发者网站了解更多有关该主题的内容: 优化高分辨率