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, 0, cellWidth, cellHeight);
    else
        dayRect   = CGRectMake(i*cellWidth+self.marginX , 0, cellWidth, cellHeight);
    CGContextStrokeRect(context, dayRect);

}

有什么建议吗?

4

1 回答 1

2

顶线比其他线细的原因是您的self.cellBorder线粗度大于 0,并且您将其绘制在y = 0. 当你这样做时,你只会看到线条粗细的一半,因为另一半在绘图矩形上方。要解决此问题,您只需在 y-position 绘制顶线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);
}
于 2013-09-09T15:04:03.657 回答