项目中的flipImage.png和[email protected] 均为。在 - [FlipsideViewController viewDidLoad]我有以下代码。健康检查(感谢其他stackoverflowers)正确报告视网膜或否。但无论哪种情况,加载的图片都是小图片,通过它的高度进行验证。为什么不自动加载适当的图像?好的,我可以看到解决方法,但我希望尽可能使用系统。iOS 6.1 XCode 4.6 - imageNamed永不返回@ 2x版本
UIImage* flipimage = [UIImage imageNamed:@"flipImage.png"];
NSLog(@"Image height = %f", flipimage.size.height); // always 416, never 832 :(
// Sanity check.
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
NSLog(@"Retina");
} else {
NSLog(@"Non-retina");
}
谢谢,显然检查图像的“大小”不*正确地告诉我哪个文件被加载。事实上,正确的事情已经完成。我需要研究更多的演变模型以及LOGICAL大小(像素)和DISPLAY大小(点数?)之间的区别。这一切都让人想起纵横比的斗争,我曾经在http://www.andrewduncan.ws/aspect的史诗般的咆哮中解决了这个问题。 furrfu! – 2013-04-29 23:51:23
@AndrewDuncan实际上,一旦图像加载到“UIImage”中,无论如何检查大小等,您都无法真正知道使用哪个文件实例化它。如果我的答案对您有帮助,请检查它旁边的复选标记,以便它将关闭这个问题。 – iwasrobbed 2013-04-30 00:33:43
如果你想知道物理点而不是逻辑点的大小,你可以询问UIImage引用的CGImage。 UIImage只是CGImage的一个包装。如果您提供的@ 2x图像等于2,您也可以向UIImage询问他的比例,通常在视网膜显示器中显示。 – Andrea 2013-04-30 06:07:12