2010-08-20 126 views
4

当前我试图展现在我的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)]; 

这是非常漂亮和完美的作品。但我想在iPhone 4上(也就是更高分辨率的屏幕)完成这项工作。问题在于,iPhone 4上的所有内容都没有问题,但图像显得非常像素化。

这样做的原因是ofcourse在屏幕上,一切都被炸毁扩展到新的分辨率,还有图像,所以图像也许应该是这样的80×80。但是当我将它们调整到80x80(原件是120x120)时,由于缩放比例的原因,它们看起来很大。

有没有办法真正让我的图片不是的TableCell的完整高度,但我希望他们在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; 
} 

正如你所看到的,第一个回复后,我试图让这个与方法的工作UIGraphicsBeginImageContextWithOptions但不知何故,这导致了一个空的形象。

回答

5

我假设你写了 “imageWithImage:scaledToSize:” 吧?

我再假设你用 “UIGraphicsBeginImageContext(yourSize)” 这一呼吁之内。如果您的平台是iPhone 4,请将其替换为“UIGraphicsBeginImageContextWithOptions(yourSize,NO,2.0)”。

“2.0”定义点的比例因子(以点为单位定义点的大小)。在视网膜前显示一个点是1x1像素。在视网膜显示上,一个点是2×2像素。

编辑: 请确保您的资源中有一个名为“[email protected]”的高分辨率版本的“icon.png”。如果是视网膜显示,这将自动加载。

+0

谢谢,这确实是一个很好的观点。我将我的方法添加到第一个问题。不知何故,这导致一个空的图像。 – 2010-08-20 09:34:39

+0

噢,需要@ 2x图标吗?或者它也可以没有它的工作。我的图像都是从网络中提取的,我应该手动重命名它们,然后在iPhone 4上运行该应用程序。 – 2010-08-20 09:46:35

+0

好吧,白色图像是我自己的愚蠢行为。谢谢(你的)信息! – 2010-08-20 10:01:17

相关问题