iphone - iOS 视网膜显示 : images double size

标签 iphone ios retina-display

为了测试非/视网膜显示,我创建了一个大小为 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/

相关文章:

css - WebKit CSS 转换 : Scaling doesn't work on Retina Mac if the scale factor is greater than 1 for certain HTML elements

javascript - 使用 javascript 检测视网膜显示屏 iPad

iphone - 为什么包含图像的 anchor 标记在Iphone的邮件应用程序中不起作用?

iphone - 在 Xcode 中组织不同版本的应用程序

ios - 当用户在 iOS 的 UITextField 中输入值时,可以不断更新 UILabel 文本

ios - 新Xcode开发电脑证书问题

ios - 自定义 UIToolbar 太靠近 iPhone X 上的主页指示器

iphone - 如何在Cocos2D中实现高清 "Retina Display"图形

iphone - 当文本已添加到 UITextFields 时,如何在 UIReturnKeyGo 和 UIReturnKeyNext 之间切换?

iphone - ImageIO initImageJPEG 实例被分配但从未释放