Bag*_*yte 3 iphone ios retina-display
为了测试不/视网膜显示,我创建了一个大小为100x100的UIView.
我创建了2张图片: - 正常尺寸(100x100) - 视网膜尺寸(200x200)
我有两种情况:1)非视网膜显示+背景中的正常尺寸图像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];
}
Run Code Online (Sandbox Code Playgroud)
yuj*_*uji 36
有一个更简单的方法来做到这一点.给图像的视网膜版本与非视网膜版本同名,除了最后的"@ 2x".例如,如果您的常规图像已命名foo.png,则应命名视网膜版本foo@2x.png.
然后,只要foo.png始终参考文件名的常规版本(例如).当您的应用程序在非视网膜硬件上运行时,将使用常规图像,但无论何时使用视网膜硬件,都将自动使用更高分辨率的图像.它比为你使用的每个图像编写一个if语句更容易,而且它实际上是有效的.