2

次のように drawRect を書きました。

-(void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    CGContextRef cxt = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(cxt, 2.0);
    CGContextSetStrokeColorWithColor(cxt, [UIColor redColor].CGColor);
    CGContextMoveToPoint(cxt, 250.0 , 0.0);
    CGContextAddLineToPoint(cxt, 250.0, 50.0);
   CGContextStrokePath(cxt);
}

赤い線を引いています。しかし、背景ビューを細胞株に設定すると消えます。私は次のようにビューを設定しました。

UIView *view = [[UIView alloc] initWithFrame:cell.frame];
        view.backgroundColor = [UIColor grayColor];
    cell.backgroundView = view;

何が問題ですか?背景ビューはどのように線を隠しますか? 助けてください

4

3 に答える 3

1

私はあなたがいると思いますUITableViewCellか?

drawRectセル自体を上書きしないでください。代わりに、カスタム、または階層backgroundView内のカスタム ビューに描画コードを配置します。contentView(計画した結果によって異なりますが、おそらく backgroundView が適切です)

backgroundViewこれは TableViewCell のサブビューであり、セル自体の上にあるため、行はなくなりました。(backgroundView の backgroundColor として使用すると、これを見ることができ[UIColor colorWithWhite:0.0 alpha:0.5]ます。) UITableViewCell には多くのビューがあり、次のようになります。

UITableViewCell
  > BackgroundView
  > (EditControl) 
  > ContentView
  > (AccessoryView)
于 2013-04-24T09:48:18.377 に答える
0

UITableViewCell の drawRect をオーバーライドするべきではないことに jaydee3 に同意します。代わりに、カスタム ビュー クラスを UIView から拡張し、そこで drawRect を拡張し、そこですべてのフレーミングとカラーリングを行い、そのビューのインスタンスをセルの背景ビューとして設定します。アプローチ

于 2013-04-24T09:53:18.770 に答える