我正在使用以下代码在CATiledLayer中画一条线:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
CGContextMoveToPoint(ctx, 130, 100.5);
CGContextAddLineToPoint(ctx, 160, 100.5);
CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
CGContextDrawPath(ctx, kCGPathStroke);
}
我得到的是这个4px模糊线:
http://img837.imageshack.us/img837/5002/fuzzyline.png
如果我将CATiledLayer更改为CALayer,则线条清晰,宽度为2px,如预期的那样。 我只在iPhone 4上得到这种行为,在3GS上,CALayer和CATiledLayer的线路都很清晰。当然,在3GS上线的厚度是1px。
任何想法如何克服这种行为。
答案 0 :(得分:1)
我找到了: 使用contentsScale == 1.0创建CATiledLayer。如果将它附加到contentScaleFactor == 2.0的视图中,则图层会被放大,这就是搞砸我绘图的地方。
解决方案: 在连接视图之前设置layer.contentsScale = 2.0。
Apple说任何未附加到视图的图层都有contentScale == 1.0,但在我的测试中,CALayer是使用contentScale == 2创建的。