将UITableViewCell中的图像调整为不是总高度

Wim*_*tra 4 iphone cocoa-touch ios4

目前我试图在我的iPhone应用程序中显示一个简单的表,我使用UITableViewCell的样式UITableViewCellStyleValue1(图像在左边,详细标签右对齐).单元格都具有默认高度(50.0f).在我将图像添加到单元格之前,我将图像的大小调整为40x40,这样它就不是单元格的总高度(我认为看起来很难看).

我这个代码执行此操作:

cell.imageView.image = [UIImage imageNamed:@"icon.png"];
cell.imageView.image = [RootViewController imageWithImage:cell.imageView.image scaledToSize:CGSizeMake(40, 40)];
Run Code Online (Sandbox Code Playgroud)

这一切都非常好,完美无瑕.但我想在iPhone 4上实现这一点(具有更高分辨率的屏幕).问题是,iPhone 4上的所有内容都没有问题,但图像看起来非常像素化.

原因在于屏幕上的所有内容都被夸大以扩展到新的分辨率,也包括图像,所以图像可能应该是80x80.但是当我将它们调整为80x80(原件为120x120)时,由于缩放的原因,它们看起来很大.

有没有办法让我的图像不是表格单元的完整高度,但我希望它们在iPhone 4上的分辨率更高.我应该为此创建一个全新的视图吗?

哎呀,在第一次回复后,我意识到我自己的书面功能缺失了:

+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    UIGraphicsBeginImageContextWithOptions(newSize, NO, [[UIScreen mainScreen] scale]);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在第一次回复之后,我尝试使用UIGraphicsBeginImageContextWithOptions方法来处理它,但不知何故,这会产生一个空图像.

Lar*_*der 5

我假设你写了"imageWithImage:scaledToSize:",对吗?

我进一步假设你在这个调用中使用"UIGraphicsBeginImageContext(yourSize)".如果您的平台是iPhone 4,请将其替换为"UIGraphicsBeginImageContextWithOptions(yourSize,NO,2.0)".

"2.0"定义点的比例因子(以点为单位定义大小而不是以像素为单位).在视网膜前显示器上,一个点是1x1像素.在视网膜显示器上,一个点是2x2像素.

编辑:确保您的资源中有一个名为"icon@2x.png"的高分辨率版本的"icon.png".如果它是视网膜显示器,它会自动加载.