如何调整Quartz 2D上下文以考虑Retina显示?

时间:2010-10-09 16:50:34

标签: iphone core-graphics quartz-graphics

我有一个直接绘制到上下文的Quartz 2D游戏。出于这个原因,我不得不调整代码,以便在适合Retina显示器时进行缩放。我使用以下代码执行此操作:

- (CGFloat) displayScale
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {

    return [[UIScreen mainScreen]scale];

}

else  

{
    return 1.0;
}

}

我现在正在努力解决的问题是如何在我的-drawRect:方法中操作我的Quartz上下文,以便通过返回的scale值进行多次操作。任何人都可以帮我这个代码吗?

1 个答案:

答案 0 :(得分:10)

您无需更改Quartz代码中的任何内容即可考虑Retina显示。如果使用以下代码在您的UIView或CALayer上设置了正确的contentScaleFactor

if ([view respondsToSelector:@selector(setContentScaleFactor:)])
{
    view.contentScaleFactor = [[UIScreen mainScreen] scale];
}

您在-drawRect:-drawInContext:内执行的二维绘图将自动为Retina显示屏进行锐利渲染。请记住,您为Quartz绘图指定的坐标将以点为单位,而不是像素。对于Retina显示器,比例因子为2.0,1点= 2像素。

有关详情,请参阅“iOS应用程序编程指南”中的“Updating Your Custom Drawing Code”部分。