【问题标题】:Is there a way to remove the separator line from a UITableView?有没有办法从 UITableView 中删除分隔线?
【发布时间】:2010-10-29 20:01:34
【问题描述】:

我正在寻找一种在纯模式下完全删除 UITableView 中的分隔线的方法。这是在分组中自动完成的,但这也会以难以衡量的方式改变表格的尺寸。我已将分隔线颜色设置为 colorClear。但这并不能完全解决问题。

当我试图在单元格中绘制自定义背景视图时,我希望单元格是无缝的,中间的一条像素线给我带来了问题。有没有比使用分组视图然后拉伸它更优雅的解决方法?

【问题讨论】:

标签: objective-c cocoa-touch uikit


【解决方案1】:

您可以使用UITableView 属性separatorStyle 执行此操作。确保该属性设置为 UITableViewCellSeparatorStyleNone 并且您已设置完毕。

目标-C

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

在 Swift 中(3 之前)

tableView.separatorStyle = .None

在 Swift 3/4/5 中

tableView.separatorStyle = .none

【讨论】:

  • 您也可以在 IB 中执行此操作,顺便说一下(分隔符 => 无)。
  • 这似乎只是删除了表格部分中的分隔线。有没有办法删除 部分之间的分隔线?
  • 部分之间的线并不是真正的线,而是部分的视图。您可以通过在UITableViewDelegate 协议中实现tableView:viewForHeaderInSection: 来更改视图。
【解决方案2】:

您也可以在故事板/xib 编辑器中执行此操作。只需将 Seperator 设置为 none。

【讨论】:

    【解决方案3】:
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
    }
    

    【讨论】:

      【解决方案4】:

      在尝试其他答案后,我仍然有一条深灰色的线。我必须添加以下两行以使单元格之间的行线方面的所有内容都“不可见”。

      self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
      self.tableView.separatorColor = [UIColor clearColor];
      

      【讨论】:

      • 这对我有用。在我的例子中,分隔线实际上并没有出现在单元格之间,而是实际上出现在它们中间的某个地方。
      【解决方案5】:

      在界面Builder中设置表格视图分隔符“无”

      并且可以通过以下方法删除最后一个单元格之后显示的分隔线。 最好的方法是在 viewDidLoad 中将 Empty View 分配给 tableView FooterView

      self.tableView.tableFooterView = UIView()

      【讨论】:

        【解决方案6】:

        在斯威夫特中:

        tableView.separatorStyle = .None
        

        【讨论】:

          【解决方案7】:

          iOS 9 beta 4 存在错误:即使您从情节提要中将 separatorStyle 设置为 UITableViewCellSeparatorStyleNoneUITableViewCells 之间也会出现分隔线。为了解决这个问题,您必须从代码中设置它,因为到目前为止,故事板中存在一个错误。希望他们能在未来的测试版中修复它。

          这是设置它的代码:

          [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
          

          【讨论】:

            【解决方案8】:

            在 ViewDidLoad 方法中,你必须写下这一行。

            tableViews.separatorStyle = UITableViewCellSeparatorStyleNone;
            

            这是有效的代码。

            【讨论】:

              【解决方案9】:

              在你的viewDidLoad:

              self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
              if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)])
              {
                  [self.tableView setSeparatorInset:UIEdgeInsetsZero];
              }
              

              【讨论】: