我有一个直接绘制到上下文的Quartz 2D游戏。出于这个原因,我不得不调整代码,以便在适合Retina显示器时进行缩放。我使用以下代码执行此操作:
- (CGFloat) displayScale
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
return [[UIScreen mainScreen]scale];
}
else
{
return 1.0;
}
}
我现在正在努力解决的问题是如何在我的-drawRect:
方法中操作我的Quartz上下文,以便通过返回的scale
值进行多次操作。任何人都可以帮我这个代码吗?
答案 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”部分。