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 位置に一番上の線を引くだけです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 に答える