如果未通过imageNamed加载,@ 2x图像的尺寸始终是非视网膜图像尺寸的两倍。
创建的图像,像这样在视网膜上的和非视网膜设备:
UIImage *anImage = [UIImage imageNamed: @"anImageName"];
NSLog(@"%@: scale: %f", NSStringFromCGSize(anImage.size), anImage.scale);
印刷视网膜设备上的CGSize对象将非视网膜图像的大小相同,但将有刻度设置为2.0。
使用明确的视网膜后缀创建图像将显示图像实际上是图像的两倍 - 因此imageNamed会自行缩放图像。
对于想要在已经创建和尺寸的图像视图中显示的情况,您仍然不需要执行任何操作 - 只需将其直接装入,图像视图将图像调整为正确的尺寸。
但是,如果您要创建一个新的图像视图,那么您需要创建一个注意UIScreen分辨率的框架,如此(不幸的是,您不能将scale属性设置为只读):
CGRect newFrame = CGRectZero;
newFrame.size.width = (anImage.size.width/[UIScreen mainScreen].scale);
newFrame.size.height = (anImage.size.height/[UIScreen mainScreen].scale);
这假设您的网络服务意识到设备的屏幕是否是视网膜;有些服务会自动检测,有些服务会要求您事先告诉他们。因人而异。
首先你应该建立一个通用的测量单位。不要使用点和像素,因为您会感到困惑,1点与2像素不相等。 – danypata
使用scale = 2使用'+ [imageWithCGImage:scale:orientation:]' – Mar0ux
@danypata然后我应该用什么来引用设备中的大小?我的理解是,对于视网膜设备1x1点== 2x2像素 – harinsa