セパレーターを単一行に設定して、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 を設定するにはどうすればよいですか?