【问题标题】:UITableview separator not hiding for iOS9UITableview 分隔符不为 iOS9 隐藏
【发布时间】:2015-10-04 10:04:18
【问题描述】:

我已经用编码实现了UITableView。我还设置了UITableViewCellSeparatorStyleNone。它在 iOS8 及更低版本中隐藏,但在 iOS9 Beta 中不隐藏。

【问题讨论】:

标签: ios uitableview ios9


【解决方案1】:

请在 layoutSubviews 方法中设置分隔符样式为 None。

当使用基于约束的布局时,基本实现会应用基于约束的布局,并且在此方法中将 separatorStyle 设置为 UITableViewCellSeparatorStyleNone 将为您隐藏分隔符。

【讨论】:

  • 在 viewDidLayoutSubviews(在我的视图控制器中)中执行此操作也很有效。
  • 如果您在 uiview 中创建表格,您可能需要在视图的 DrawRect 属性中进行设置。
【解决方案2】:

我也面临同样的问题。我的解决方法就是设置

tableView.separatorColor = UIColor.clearColor().

【讨论】:

    【解决方案3】:

    根据我的调查,问题不是 iOS 9,而是 Xcode 7.0 beta 4。

    如果我使用 Xcode 7.0 beta 4 构建应用程序,那么即使在 Interface Builder 中设置为无,也会显示单元格分隔符。如果我使用 Xcode 6.4 或 7.0 beta 3 构建相同的代码,则不会显示分隔符。

    您可以在 ViewController 中显式调用它作为一种解决方法:

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    

    (我猜ibtool 可能有问题)

    【讨论】:

    • 在我的情况下,我正在使用 xcode 6.4 从代码构建中加载 UITableview,但我仍然遇到了这个问题。
    • 我在当前项目中遇到了问题,尽管我以编程方式构建了一个 tableView 及其属性。因此 ibtool 可能有过错,但他不是唯一有罪的演员 :)
    • 完美,当我更新到最终的 Xcode 版本时,我得到了解决问题。
    【解决方案4】:

    来自apple developer forum 的解决方案对我有用:

    您可以通过在每个 reloadData 方法(ios 9.1)之前设置 UITableViewCellSeparatorNone 来删除分隔符。不知道为什么,UITableView 在 reloadData 方法被调用后每隔一段时间就会重置 separatorStyle 和 separatorColor。

    【讨论】:

    • 你的意思是在每次 reloadData 调用之后还是之中?我有过类似的经历,我必须添加额外的调用来设置分隔符和背景颜色以使表格正确显示。
    【解决方案5】:

    将分隔符样式设置为 .None 对我不起作用,所以我使用边缘插图作为解决方法

    self.tableView.separatorInset.left = UIScreen.mainScreen().bounds.width
    

    【讨论】:

    • YESSSSS。当没有足够的单元格来填充 tableview 时,唯一有效的解决方案。
    【解决方案6】:

    我遇到了同样的问题,在 iOS 8 上运行良好,但在 iOS9 中显示了分隔符。我已经将分隔符样式设置为无。以下为我解决了它

    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
            cell.preservesSuperviewLayoutMargins = NO;
        }
        cell.separatorInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, cell.bounds.size.width);
        if([cell respondsToSelector:@selector(setLayoutMargins:)]) {
            cell.layoutMargins = UIEdgeInsetsZero;
        }
    

    这基本上使用插图挤压分隔符。

    【讨论】:

      【解决方案7】:

      这个问题很烦人。这是我的解决方案:

      override func didMoveToSuperview() {
          if self.superview != nil {
              self.tableView.separatorStyle = .None
          }
      }
      

      当视图被添加到其父视图时,再次设置 separatorStyle。

      【讨论】:

        【解决方案8】:
        myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        

        斯威夫特

        myTableView.separatorStyle = UITableViewCellSeparatorStyle.None
        

        cellForRowAtIndexPath 方法中会在 iOS 9 及更高版本中隐藏白线。

        【讨论】:

          【解决方案9】:

          以下代码对我有用,

            override func layoutSubviews() {
               super.layoutSubviews()
               tableView.separatorStyle = .none 
             }
          

          【讨论】:

            猜你喜欢
            • 2015-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多