当我尝试绘制彼此重叠的矩形时,我遇到了一个奇怪的问题。 见下图:
正如您所看到的,顶部线条比其他线条(底部线条和垂直线条)更有效,特别是线条比分隔矩形的线条。 我使用了以下代码:
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);
}
有什么建议吗?
答案 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);
}