目前我正在为我的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;
答案 0 :(得分:2)
通常,您应该使用与屏幕上使用的图像完全相同的图像。否则,您将使图像缩放到软件,最终可能会出现未对齐的像素和尖锐的线条变得模糊。请记住,从iOS 4开始,UIKit中的所有测量都在UIKit点,其中Retina显示1pt = 2px,非Retina,1pt = 1px。
因此,对于您的15pt×15pt图像视图,如果您打算同时定位Retina和非Retina设备,则需要两个图像文件:
然后你打电话给[UIImage imageNamed:@"cell-arrow"]
(注意缺少扩展名 - UIKit为你找出它),操作系统会根据需要加载1x或2x版本。