为了测试非/视网膜显示,我创建了一个大小为 100x100 的 UIView。
我创建了 2 张图片: - 正常尺寸 (100x100) - 视网膜尺寸 (200x200)
我有两种情况: 1) 非 Retina 显示屏 + 背景中的正常尺寸图像 2) 视网膜显示 + 背景中的视网膜大小图像
第一种情况没问题。 在第二种情况下,图像是双倍大小,在我的 UIView 中我只能看到总图像的 1/4。
当我尝试将背景图像分配给我的 UIViewController 导航栏时,也会发生同样的情况,如下所示:
if (IS_RETINA()) {
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:IMG_NAVIGATION_BAR_BACKGROUND_RETINA] forBarMetrics:UIBarMetricsDefault];
}
else {
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:IMG_NAVIGATION_BAR_BACKGROUND] forBarMetrics:UIBarMetricsDefault];
}
最佳答案
有一种更简单的方法可以做到这一点。为图像的 Retina 版本提供与非 Retina 版本相同的名称,但末尾带有“@2x”。例如,如果您的常规图像名为 foo.png
,则视网膜版本应命名为 foo@2x.png
。
然后,始终引用文件名的常规版本(例如,foo.png
)。当您的应用程序在非视网膜硬件上运行时,将使用常规图像,但只要您在视网膜硬件上运行,就会自动使用更高分辨率的图像。这比为您使用的每个图像都编写 if 语句要容易得多,而且它确实有效。
关于iphone - iOS 视网膜显示 : images double size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368106/