0

現在、グループ化された UITableViewCell (サブクラス化されていない) の背景選択色を次のコードで変更しようとしています:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ...
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

}

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];


     cell.contentView.backgroundColor = [UIColor yellowColor];    
}

次の問題が発生します。

ここに画像の説明を入力

また試した:

cell.selectedBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width - 17, cell.frame.size.height-3)];
        cell.selectedBackgroundView.backgroundColor = coolBlue;
        UIBezierPath *rounded;

            rounded = [UIBezierPath bezierPathWithRoundedRect:cell.selectedBackgroundView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(8.0f, 8.0f)];
        else
            rounded = [UIBezierPath bezierPathWithRoundedRect:cell.selectedBackgroundView.bounds byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight cornerRadii:CGSizeMake(8.0f, 8.0f)];

        CAShapeLayer *shape = [[CAShapeLayer alloc] init];
        [shape setPath:rounded.CGPath];

        cell.selectedBackgroundView.layer.mask = shape;

上記のコードを使用しようとすると、高さから 3 を減算しようとすると、セルの下部の部分が切り取られます。区切り線を維持するために、3 ピクセルを減算しています。

4

1 に答える 1

0

使用してみましたか:

[cell setBackgroundColor:[UIColor yellowColor]];

私にはうまくいくようですが、私のtableViewはあなたのものとは異なる設定になっている可能性があります。

于 2013-07-27T21:28:04.257 に答える