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

Guy*_*ood 4 iphone core-graphics quartz-graphics

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

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

    return [[UIScreen mainScreen]scale];

}

else  

{
    return 1.0;
}
Run Code Online (Sandbox Code Playgroud)

}

我现在正在努力的是如何在我的-drawRect:方法中操作我的Quartz上下文,以便通过返回的scale值多处理.任何人都可以帮我这个代码吗?

Bra*_*son 10

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

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

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

有关详细信息,请参阅" iOS应用程序编程指南"中的" 更新自定义绘图代码 "部分.