ios - 边框重叠的矩形

时间:2013-09-09 14:54:28

标签: ios cgrectmake

当我尝试绘制彼此重叠的矩形时,我遇到了一个奇怪的问题。 见下图:

enter image description here

正如您所看到的,顶部线条比其他线条(底部线条和垂直线条)更有效,特别是线条比分隔矩形的线条。 我使用了以下代码:

for (int i = 0; i < 7; i++)
{

    (...)
    CGContextBeginPath(context);
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
    CGContextSetLineWidth(context, self.cellBorder);
    CGRect dayRect;
    if (i > 0)
        dayRect   = CGRectMake(i*cellWidth+self.marginX - 1, 0, cellWidth, cellHeight);
    else
        dayRect   = CGRectMake(i*cellWidth+self.marginX , 0, cellWidth, cellHeight);
    CGContextStrokeRect(context, dayRect);

}

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

顶线比其他线条更薄的原因是您的self.cellBorder线条粗细大于0,而您正在y = 0的线条上绘制。当你这样做时,你将只看到线的一半厚度,因为另一半在绘图矩形之上。要解决此问题,您只需在y位置self.cellBorder / 2绘制顶线即可。以下是代码的更改方式:

for (int i = 0; i < 7; i++) {
    // ...
    CGContextBeginPath(context);
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
    CGContextSetLineWidth(context, self.cellBorder);
    CGRect dayRect;
    if (i > 0)
        dayRect = CGRectMake(i*cellWidth+self.marginX - 1, self.cellBorder / 2, cellWidth, cellHeight);
    else
        dayRect = CGRectMake(i*cellWidth+self.marginX , self.cellBorder / 2, cellWidth, cellHeight);
    CGContextStrokeRect(context, dayRect);
}