iphone - 调整 UITableViewCell 中的图像大小,使其不等于总高度

标签 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)];

这一切都非常好并且工作完美。但我也想在 iPhone 4(具有更高分辨率的屏幕)上实现这一点。问题是,在 iPhone 4 上缩放一切都没有问题,但图像显得非常像素化。

原因当然是屏幕上的所有内容都被放大以适应新的分辨率,图像也是如此,因此图像可能应该是 80x80 左右。但是当我将它们的大小调整为 80x80(原始尺寸为 120x120)时,由于缩放的原因,它们看起来太大了。

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

哎呀,在第一次回复后我意识到我自己写的函数丢失了:

+ (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 一起使用,但不知何故这会导致空图像。

最佳答案

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

我进一步假设您在此调用中使用“UIGraphicsBeginImageContext(yourSize)”。如果您的平台是 iPhone 4,请将其替换为“UIGraphicsBeginImageContextWithOptions(yourSize, NO, 2.0)”。

“2.0”定义点的比例因子(您以点而不是像素来定义大小)。在预视网膜显示屏上,一个点的大小为 1x1 像素。在视网膜显示屏上,一个点是 2x2 像素。

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

关于iphone - 调整 UITableViewCell 中的图像大小,使其不等于总高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3528924/

相关文章:

ios - 我怎么知道在ios中打开或关闭飞行模式

iphone - MapView 以用户坐标为中心缩放

ios4 - xcode4 “dyld: Symbol not found: _OBJC_CLASS_$_AVCaptureDevice”错误

iphone - 如何在 iPhone 中本地打开 .doc 文件?

cocoa-touch - 当我快速点击 UITextField 时,为什么 UIKeyboard 没有出现?

objective-c - 如何判断 UILabel 何时将被截断和/或其换行位置将更改

iPhone SDK : How to check if IP entered by user is valid?

iPhone 核心动画 - 为 NSBezierPath 制作动画

ios - 呈现的 UIViewController 没有在解雇时被释放

ios - 将通用应用转换为仅iPhone应用