我有以下代码为UITableViewCell创建渐变背景。渐变很棒。但是,当我尝试选择一行时,我看不到常规的蓝色突出显示的行。如果我删除自定义渐变代码,选定的行突出显示工作正常。我不确定我在这里缺少什么。非常感谢任何帮助。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"TimeTableViewCellList";
TimeTableViewCell *cell = (TimeTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"TimeCell" owner:self options:nil] lastObject];
//To create the cell gradient
UIColor *startColor = [UIColor whiteColor];
UIColor *endColor = [UIColor colorWithRed:247.0/255.0 green:243.0/255.0 blue:238.0/255.0 alpha:1.0];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = cell.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[startColor CGColor], (id)[endColor CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:0];
}
TimeEntry * entry = [[self getTimeEntriesBySection:indexPath.section] objectAtIndex:indexPath.row];
//..OTHER CELL VALUES SET HERE
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
return cell;
}
答案 0 :(得分:1)
以下是基于@jtruton的解决方案 以下是来自单元子类
的代码片段- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if (selected) {
self.theGradient.hidden = YES;
} else {
self.theGradient.hidden = NO;
}
}
答案 1 :(得分:0)
您的渐变图层将遮挡所选效果。
尝试将渐变图层添加到cell.contentView.layer
。如果这不起作用,您可能必须使图层成为细胞子类的属性,并在覆盖setSelected:animated: