5

プレーンなスタイルのUITableViewがあり、そのセルはUITableViewCellのサブクラスです。

セルサブクラスで、drawRectをオーバーライドして、この描画コードを(垂直セパレーターの場合)配置します。

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]);
CGContextBeginPath(c);
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0);
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height);
CGContextStrokePath(c);

それはうまくいきました。ただし、テーブルビューのスタイルをグループ化に変更しました。線は引かれていません。ブレークポイントを設定すると、drawRectメソッドが呼び出されます。

特に、テーブルビューセルをすでにサブクラス化していて、セルに描画したいだけなので、小さな線を描画するためだけにUIViewをサブクラス化することは避けたいと思います。では、なぜコードがグループ化されたテーブルビューで突然機能しなくなるのでしょうか。

4

1 に答える 1

10

サブクラスでオーバーライドdrawRectすることはお勧めできません。UITableViewCellカスタムセルを設定したくない場合は、幅1pxの backgroundView単純なものを追加するだけです。UIView

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)];
vertLineView.backgroundColor = [UIColor redColor];
[self.contentView addSubview:vertLineView];
于 2012-05-12T15:07:43.323 に答える