我想在分组的tableview中突出显示UITableViewCell的背景颜色。我现在使用的代码产生了这个结果。有人可以告诉我这样做的正确方法,以便保持uitableviewcell的圆角吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.bounds] ;
cell.selectedBackgroundView.backgroundColor = coolBlue ;
}
更新代码:
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.bounds];
cell.selectedBackgroundView.backgroundColor = coolBlue;
UIBezierPath *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;
rounded = nil;
shape = nil;
更新
答案 0 :(得分:7)
通过使用Bazier Path,您可以给出前两个或后两个或任意数量的角半径(显然是4个)。
这里我设置了单元格背景视图的左上角和右上角:
UIBezierPath *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;
rounded = nil;
shape = nil;
// you can change the code as per your need
现在你只想设置第一个和最后一个单元格背景的角落。
并且请记住在您的项目中添加QuartzCore Framework并在您的课程中添加#import <QuartzCore/QuartzCore.h>
。
您可以使用以下方式更改textlable的textcolor:
cell.textLabel.highlightedTextColor = [UIColor blackColor];
答案 1 :(得分:0)