iOS7上的UITableView分隔符颜色错误

Posted

技术标签:

【中文标题】iOS7上的UITableView分隔符颜色错误【英文标题】:Wrong UITableView separator color on iOS7 【发布时间】:2014-02-17 12:48:52 【问题描述】:

我这样设置UITableView分隔符颜色:

- (void)viewDidLoad

    [super viewDidLoad];
    self.tableView.separatorColor = [UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.1f];

SOMETIMESiOS7 上,我的表格视图分隔符看起来不同(我猜带有数据的单元格和空单元格分隔符具有不同的 alpha),请查看附图:

我该如何解决这个问题?

【问题讨论】:

@santhu 前两个分隔符明显比分隔空白单元格的要暗。 【参考方案1】:

如果要删除所有内容为空的单元格分隔符,请使用以下代码行。

self.tableView.tableFooterView = [[UIView alloc] init]; 

viewDidLoad 方法中。

其他方式设置self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;并设置您的自定义UIImage作为分隔符。

前:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *CellIdentifier = @"cell"; //[NSString stringWithFormat:@"S%1dR%1d", indexPath.section, indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        .
        . // your other code.
        .
        UIImageView *imgLine = [[UIImageView alloc] init];
        imgLine.tag = 101;
        [cell.contentView addSubview: imgLine];
     

        .
        . // your other code.
        .

     UIImageView *imgLine = (UIImageView *) [cell.contentView viewWithTag:101];
     imgLine.frame =  CGRectMake(5, 69, 310, 1);
     imgLine.image = [UIImage imageNamed:@"queTblLine.png"];

     return cell;

别忘了设置self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

编辑: 不确定,但可能对您的情况有所帮助:

设置self.tableView.separatorInset = UIEdgeInsetsZero;

获取From question/answer.

【讨论】:

谢谢,但我不想“删除”空单元格,我希望空单元格与带有数据的单元格具有相同的分隔符颜色。 那么您可能会使用我的其他建议,这对您来说也是最好和容易的。 :) 如何为表格分隔符设置 UIImage?添加 UIImageView 作为单元格子视图? 使用了最后一个选项(即link),似乎工作正常。谢谢。 +1!设置self.tableView.separatorInset = UIEdgeInsetsZero; 并像魅力一样工作!!!非常感谢你! :)【参考方案2】:

交换两个语句的顺序。先设置颜色,再设置插图:

self.tableView.separatorColor = [UIColor redColor];
self.tableView.separatorInset = UIEdgeInsetsZero;

【讨论】:

【参考方案3】:

您可以在故事板或 nib/xib 中直观地实现这一点

将 UIImageView 放在单元格的底部边缘,您可以根据需要设置图像

第一步:根据图片设置分隔线

第 2 步:将分隔符样式设置为无

【讨论】:

【参考方案4】:

您可以通过编程方式设置它:

- (void)viewDidLoad 
   [super viewDidLoad];

   [[UITableView appearance] setSeparatorColor:[UIColor redColor]];


【讨论】:

以上是关于iOS7上的UITableView分隔符颜色错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 中的 UITableView 分隔符颜色是啥?

iOS7 UITableView 部分中的最后一个单元格强制全宽分隔符

UITableView 分隔符在 iOS7 中显示不正确

iOS7 附件视图中的背景颜色错误

UITableView 在 iOS8 中为某些单元格显示错误位置的分隔符

分组 UITableView 的背景颜色在 iOS7 中不会透明