1

セパレーターを単一行に設定して、Interface Builder でテーブル ビューを設定し、データ ソース クラスに次のコードを記述しました。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) {
        UIImageView *topCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg-top"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)]];
        cell.backgroundView = topCellBackgroundImageView;
    }
    // If it's the last row
    else if (indexPath.row == ([tableView numberOfRowsInSection:0] - 1)) {
        UIImageView *bottomCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg-bottom"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)]];
        cell.backgroundView = bottomCellBackgroundImageView;
    }
    else {
        UIImageView *middleCellBackgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"grouped-cell-bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(3.0, 3.0, 3.0, 3.0)]];
        cell.backgroundView = middleCellBackgroundImageView;
    }
}

そしてviewDidLoad私は:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.separatorColor = [UIColor redColor];
    self.tableView.backgroundView = nil;
    self.tableView.backgroundColor = [UIColor colorWithRed:245/255.0 green:244/255.0 blue:240/255.0 alpha:1.0];
}

しかし、境界線の色は表示されません。画像にそれらを設定しようとしましたが、明らかに画像のセンタリングの問題が多く、境界線が重なっています。

アップデート:

もう少し調べてみると、実際に設定されていますが、セルの backgroundView を設定すると、separatorColorの上に backgroundView として設定したものが置かれるようです。メソッドを削除するwillDisplayCell:と、赤色が正常に表示されます(backgroundViewが設定されていてもセルを選択すると、選択を解除するまで赤色が表示されます)。問題は、backgroundView が設定されている場合、separatorColor を設定するにはどうすればよいですか?

4

1 に答える 1

2

使用できるトリックの 1 つはUIView、背景ビューに、背景色が赤で高さが 1 ポイントの を追加することです。もう 1 つのオプションは、背景ビューのイメージ ファイルにこのような赤い線を組み込むようデザイナーに依頼することです。

于 2013-07-06T20:41:02.247 に答える