我正在使用其委托(delegate)方法drawLayer:inContext:
在CALayer上绘制图形。
现在,我想支持Retina Display,因为在最新设备上该图看起来很模糊。
对于直接在CALayer传递的图形上下文上绘制的零件,我可以通过如下设置CALayer的contentScale属性很好地绘制高分辨率。
if ([myLayer respondsToSelector:@selector(setContentsScale:)]) {
myLayer.contentsScale = [[UIScreen mainScreen] scale];
}
但是对于我使用CGLayer的零件仍然模糊不清。
如何使用高分辨率的CGLayer来支持Retina Display?
我想使用CGLayer重复绘制图形的相同图形形状,以及剪切超出图层边缘的图形线。
我通过
CGLayerCreateWithContex
通过从CALayer传递的图形上下文获得CGLayer,并使用CG函数(例如CGContextFillPath
或CGContextAddLineToPoint
)利用其上下文。我需要同时支持iOS 4.x和iOS 3.1.3,以及Retina和传统显示器。
谢谢,
藏
最佳答案
这是为所有分辨率正确绘制CGLayer的方法。
int width = 25;
int height = 25;
float scale = [self contentScaleFactor];
CGRect bounds = CGRectMake(0, 0, width * scale, height * scale);
CGLayer layer = CGLayerCreateWithContext(context, bounds.size, NULL);
CGContextRef layerContext = CGLayerGetContext(layer);
CGContextScaleCTM(layerContext, scale, scale);
CGRect bounds = CGRectMake(0, 0, width, height);
CGContextDrawLayerInRect(context, bounds, layerContext);
而已!
关于ios - iOS:我如何通过CGLayer支持Retina Display?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6729899/