7

这是我的代码:

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。

在此处输入图像描述

4

2 回答 2

19

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

在此处输入图像描述

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

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

于 2013-02-26T19:41:30.867 回答
3

将图层框架设置为

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

是的,它也适用于视网膜

检查这篇文章1 节点线和像素边界。那里有很好的解释

于 2013-02-26T19:00:51.047 回答