使用iOS Retina显示屏进行奇怪的重新调整大小和分辨率

时间:2013-07-24 21:45:06

标签: iphone ios objective-c

目前我正在为我的UITableView附件视图使用自定义图像。我使用此自定义图像将附件视图设置为imageview。如果我使用cell-arrow.png(15x15像素),它看起来很像素化。但是,如果我使用cell-arrow.png(100x100像素),然后在代码中重新调整大小[见下文],那么它看起来好多了。这是为什么?

跟进问题:

似乎已经确定使用100x100px图像,然后将其尺寸调整为15x15,在设备上看起来更好(特别是视网膜,尚未完全测试它<4.0)。 后续问题是我可以设置图像的最大尺寸,以便提高分辨率?例如,我测试了相同的cell-arrow.png图像的1024x1024版本,它看起来像与我重新调整100x100像素图像的大小相同。

* 用于重新调整图片大小的代码:*

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 15.0f, 15.0f);
    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
    [myImage setImage:[UIImage imageNamed:@"cell-arrow.png"]];

   // cellArrowNotScaled ends up making the image look very pixelated
   // UIImageView *cellArrowNotScaled = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell-arrow15.png"]];

    cell.accessoryView = myImage; //cellArrowNotScaled;

1 个答案:

答案 0 :(得分:2)

通常,您应该使用与屏幕上使用的图像完全相同的图像。否则,您将使图像缩放到软件,最终可能会出现未对齐的像素和尖锐的线条变得模糊。请记住,从iOS 4开始,UIKit中的所有测量都在UIKit点,其中Retina显示1pt = 2px,非Retina,1pt = 1px。

因此,对于您的15pt×15pt图像视图,如果您打算同时定位Retina和非Retina设备,则需要两个图像文件:

  • cell-arrow.png,15px×15px图像
  • cell-arrow@2x.png,30px×30px图片

然后你打电话给[UIImage imageNamed:@"cell-arrow"](注意缺少扩展名 - UIKit为你找出它),操作系统会根据需要加载1x或2x版本。