在iPhone上为1x和2x图形使用一张照片

在iPhone上为1x和2x图形使用一张照片,iphone,objective-c,uiimage,retina-display,Iphone,Objective C,Uiimage,Retina Display,我正在开发一个漫画查看器应用程序,可以从服务器下载最新的内容。无论屏幕大小,它都会下载单个文件。我想做的是让这个文件在两个屏幕上都正常工作 这个过程是什么?我应该如何调整照片的大小以适合?我遇到的问题是,这些图形都是视网膜屏幕大小的,但iPhone并没有这样理解它们。这意味着它们显示的大小是其应有大小的两倍 CGImageRef cgImage = [myImage cgImage]; UIImage *retinaImage = [UIImage imageWithCGImage:cgImag

我正在开发一个漫画查看器应用程序,可以从服务器下载最新的内容。无论屏幕大小,它都会下载单个文件。我想做的是让这个文件在两个屏幕上都正常工作

这个过程是什么?我应该如何调整照片的大小以适合?我遇到的问题是,这些图形都是视网膜屏幕大小的,但iPhone并没有这样理解它们。这意味着它们显示的大小是其应有大小的两倍

CGImageRef cgImage = [myImage cgImage];
UIImage *retinaImage = [UIImage imageWithCGImage:cgImage scale:2.0 orientation:UIImageOrientationUp];
您还可以在图像编辑器中更改图像的dpi值,使
UIImage
自动识别比例


但是,通常情况下,您应该在没有视网膜显示器的设备上使用低分辨率图像,否则会浪费宝贵的内存。

对于普通屏幕,您可以通过编程方式调整它们的大小,方法是向UIImage类添加缩放类别。例如,stackoverflow上有许多代码示例,如:


对于视网膜,您需要设置UIImage的比例,让ios知道它使用的屏幕大小(您可以使用initWithCGImage:scale:orientation:method of UIImage设置)。

这是有道理的,但我说的更多的是根据设备动态调整。换句话说,您下载了一个100x100图像,缩放后的UIImage在iPhone3G3上为50x50,但在iPhone4上为100x100。