0

古典的な「線を引くにはどうすればよいか」という質問をしているとは信じられませんが、それよりも少し複雑です。

私は、separatorColor をクリアに設定したグループ化されたテーブルビューを持っています。これにより、境界線と区切り線が削除されます。また、セルの周りにグラデーションを描画するために使用している UITableViewCell のカテゴリもあります。

この同じカテゴリ内に行区切りも描画できるようにしたいと思います。これが私がこれまでに持っているものです:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);

float y = height;

CGContextMoveToPoint(ctx, CGRectGetMinX(rect), y);
CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), y);

CGContextSetStrokeColorWithColor(ctx, color.CGColor);
CGContextSetLineWidth(ctx, width);
CGContextStrokePath(ctx);

CGContextRestoreGState(ctx);

これは機能しますが、線はtableView セルの後ろに表示されます。セルの上に表示されるようにしたいと思います。

私は何が欠けていますか?

ありがとう!

編集:スクリーンショット

よく見ると、エッジに緑色のピクセルが見えます。一番下は丸見えです。

編集 2: コード

- (void)drawRect:(CGRect)rect {
     CGContextRef ctx = UIGraphicsGetCurrentContext();
     CGContextSaveGState(ctx);

     [self drawLineSeparator:self.contentView.frame];
}


- (void) drawLineSeparator:(CGRect)rect {
     [self drawLineAtHeight:CGRectGetMaxY(rect)
                  rect:rect
                 color:[UIColor colorWithRed:0 green:1 blue:0 alpha:.7]
                 width:1];
}


- (void) drawLineAtHeight:(float)height rect:(CGRect)rect color:(UIColor *)color width:(float)width {
     CGContextRef ctx = UIGraphicsGetCurrentContext();
     CGContextSaveGState(ctx);

     float y = height;

     CGContextMoveToPoint(ctx, CGRectGetMinX(rect), y);
     CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), y);

     CGContextSetStrokeColorWithColor(ctx, color.CGColor);
     CGContextSetLineWidth(ctx, width);
     CGContextStrokePath(ctx);

     CGContextRestoreGState(ctx);
}

ここに画像の説明を入力

4

1 に答える 1