CALayer:单像素线看起来像2像素

时间:2013-02-26 18:37:41

标签: objective-c cocoa core-animation core-graphics

这是我的代码:

int columns 3;
int columnWidth = self.layer.bounds.size.width / 3;

for (int c = 1; c < columns; c++) {
    CALayer *layer  = [CALayer layer];
    layer.frame = (CGRectMake(columnWidth * c + 0.5, 0.5, 1, self.layer.bounds.size.height));
    layer.backgroundColor = myColor;
    [grid addSublayer:layer];
}

据我所知,我必须将x和y移动0.5像素,这就是我所做的,但它仍然显示为2像素而不是1。

enter image description here

2 个答案:

答案 0 :(得分:20)

我继续做了一个解释性的图片,以防它对任何人都有帮助

enter image description here

精确像素坐标的下方线条看起来模糊......线条宽度的每一半都位于不同的像素行中......

上面一行偏移line_width/2.0并且看起来很清晰......它完全位于一行像素内。

答案 1 :(得分:3)

将图层框设置为

layer.frame = (CGRectMake(columnWidth * c + 0.5, 0.5, 0.5, self.layer.bounds.size.height));

是的,它也适用于视网膜

检查此post部分 1点线和像素边界。这里有很好的解释