【问题标题】:Change color of inset area in UITableView separator更改 UITableView 分隔符中插入区域的颜色
【发布时间】:2014-04-09 02:26:18
【问题描述】:

我有一个自定义的 UITableView,单元格有不同的背景颜色(在自定义 backgroundView 中设置)。但是,背景颜色仅应用于单元格中,而不扩展到分隔符的插入区域。正如您在屏幕截图中看到的,彩色分隔符左侧有一个白色区域。

我们如何改变这条白线的颜色?我们希望通过将线条设置为与单元格背景相同的颜色来使其“消失”。谢谢!

【问题讨论】:

  • 您使用的是 Xcode 5 吗?和界面构建器?
  • 是的 Xcode 5。我们从故事板加载视图控制器并在代码中设置颜色。

标签: ios uitableview custom-controls


【解决方案1】:

将单元格的背景颜色设置为与 contentView 的背景颜色相同似乎效果最好。

cell.backgroundColor = cell.contentView.backgroundColor;

这将处理附件视图颜色错误的情况。

【讨论】:

  • 您也可以在 Interface Builder, FWIW 中进行设置
  • @jmstone 怎么样?如果颜色是固定值,我可以看到如何做,但我不知道如何分配不同视图的颜色
【解决方案2】:

所以我自己也遇到了这个问题,这很奇怪,因为它似乎在某些 tableview 上运行良好。我假设您使用的灰色是您的表格视图的背景颜色。否则,此解决方案可能不起作用。

当存在分隔符插入时,iOS 7 中的单元格似乎并不总是采用 tableview 背景颜色,因此您需要手动将单元格背景设置为 clearColor。有趣的是,在故事板中设置这个值对我不起作用,我必须在代码中完成。添加这个:

cell.backgroundColor = [UIColor clearColor];

当您在此委托函数中配置单元格时:

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

【讨论】:

  • 谢谢,我尝试了你的建议,颜色不再是白色,但还是和 contentview.backgroundColor 不同的颜色:(cl.ly/image/063n0z18002L。你的单元格是什么样子的?
  • @zavié 这仅在您将 tableview.backgroundColor 设置为您用于单元格背景颜色的任何颜色时才有效。
【解决方案3】:

这是 iOS 7 中的默认设置。但您可以将其更改为 iOS 6 的外观。请在下面尝试我的代码。你会惊讶:

    tableView.separatorColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
    NSString *iosversion = [[UIDevice currentDevice] systemVersion];
    int version = [iosversion intValue];
    if(version>6)
    {
        tableView.separatorInset = UIEdgeInsetsZero;
    }

Swift 3+:

tableView.separatorInset = UIEdgeInsets.zero

【讨论】:

    【解决方案4】:

    使用图像作为分隔符。这是实现预期结果的唯一简单方法。对于 xib 中的 ios 7,您可以使用边缘昆虫属性。

    【讨论】:

      【解决方案5】:

      转到 storyboard > Attribute Inspector > Separator Insets,然后选择 cutom 并将左坐标从 15 更改为 0。 它会完成的。

      【讨论】:

        【解决方案6】:

        在 UITableViewCell 上的界面构建器中将属性“背景”设置为清晰(或其他),然后在内容视图上将属性“背景”也设置为清晰,问题应该会消失。

        【讨论】:

          【解决方案7】:

          这是唯一对我有用的方法...(分隔符 = None via storyboard)

          【讨论】:

            【解决方案8】:

            我有类似的问题,下面的代码就像魅力一样。 [self.tableView reloadData]

            在 didSelectRowAtIndexPath 方法上重新加载 tableview。

            • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.tableView reloadData] }

            只有这解决了我的问题。

            【讨论】:

            • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-09-27
            • 2015-08-24
            • 2019-03-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多