使用drawRect的UITableViewCell渲染:在Retina iPad显示屏上显得模糊

时间:2012-03-22 15:51:34

标签: objective-c ios5 uitableview drawrect retina-display

我在UITableViewCell子类中使用drawRect:来进行滚动时的渲染性能;单元格(文本和图形)上的所有内容都在drawRect:中呈现。在新iPad的视网膜显示屏上,细胞看起来非常模糊。

为了进行比较,这里是一个屏幕截图,显示了两个单元格(在顶部)和另一个同样大小的图像在底部。底部图像和细胞质量之间的差异很明显。

Screenshot taken on iPad with retina display

这是在物理设备上,而不是模拟器上。我已经确认我正在使用的UIImage个实例的比例为2;用户的头像图像是从网上加载的,所以这不是@2x后缀的问题。 “Awesome”图像是从主捆绑中加载的相同资产。此外,文本本身也很模糊。

我尝试过不同的抗锯齿选项。我也尝试将我的视图的contentScaleFactor和我的视图图层的contentScale设置为[[UIScreen mainScreen] scale],但它也没有帮助。

有什么建议吗?

编辑:

以下是负责呈现用户头像的drawRect:方法的片段。 _avatar是一个实例变量,而addRoundedRectToPath()只是将上下文路径中5个点的角半径剪切掉。

{
    CGContextSaveGState(context);

    addRoundedRectToPath(context, avatarFrame, 5, 5);
    CGContextClip(context);

    [_avatar drawInRect:avatarFrame];

    CGContextRestoreGState(context);
}

评论的文本以类似的方式呈现:

[[UIColor whiteColor] set];
[_body drawInRect:textRect withFont:kPXCompositePhotoCommentCellBodyFont];

我正在使用Xcode 4.3.2使用5.1基本SDK部署到iOS 5.0。

1 个答案:

答案 0 :(得分:4)

您是否将视图的图层设置为要光栅化?这是一个选择性的东西,有时它被用作加速电池性能的技巧。但不正确地使用它会导致难看的层次。