我正在使用带背景的文字标签作为cell.accessoryView
。选择Table
后,我的附件视图背景(label.backgroundColor
)会消失。我可以通过设置label.highlightedTextColor
来恢复标签的文字颜色。但我无法恢复其背景颜色。有highlightedTextBackgroundcolor
或selectedBackgroundView
吗?
UIImage *indicatorImage = [UIImage imageNamed:DISTANCE_BUBBLE];
cell.accessoryView = [[UIImageView alloc]initWithImage:indicatorImage];
distanceLabel=[[UILabel alloc]initWithFrame:cell.accessoryView.bounds];
distanceLabel.textColor=[UIColor whiteColor];
distanceLabel.textAlignment=UITextAlignmentCenter;
distanceLabel.font=[UIFont boldSystemFontOfSize:13.0];
distanceLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:DISTANCE_BUBBLE]];
distanceLabel.numberOfLines = 0;
distanceLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.accessoryView=distanceLabel;
答案 0 :(得分:1)
将附件视图创建为包含一个视图中的背景和标签的视图。
答案 1 :(得分:1)
UITableViewCell子类。
它会为您提供更多控制,并使您的cellForRowAtIndexPath方法保持整洁。
答案 2 :(得分:0)
编写以下代码可能对您有所帮助。
/////////////////////////////////////////////// ///////////////// 编辑代码 ///////////////////////////////////////// /////////////////////////////////////
用于显示单元附件视图的backGroundColor
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.textLabel.textColor = [UIColor blackColor];
}
UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[colorView setImage:image];
[cell setAccessoryView:colorView];
cell.textLabel.text=[self.listOfFrnd objectAtIndex:indexPath.row];
return cell;
}
显示单元格背景视图的单元格BackGround图像
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.textLabel.textColor = [UIColor blackColor];
}
UIImageView *colorView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
CGRect rect = CGRectMake(0.0f, 0.0f, 30.0f, 30.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextFillRect(context, rect);
UIGraphicsEndImageContext();
[colorView setImage:[UIImage imageNamed:@"apple.png"]];
[cell setAccessoryView:colorView];
cell.textLabel.text=[self.listOfFrnd objectAtIndex:indexPath.row];
return cell;
}
在我尝试之后,发现如果您使用多个单元 accessoryView ,则它只显示一个 accessoryView 。我不确定我是对的,但可能是真的:) 谢谢:))