2017-02-17 58 views
0

enter image description here为什么TableView在某些行上添加了不可见的分隔符?

这个分隔符在普通视图中是不可见的。我将所有分隔层设置为红色并已经看到它。如果我设置了tableView.separatorStyle = .none,则此分隔符和正常分隔符不会添加到单元格中。容易重现:

  1. 添加TableViewController

  2. 设置单元格enter image description here

  3. 代码添加到单元格:

    override func layoutSubviews() { 
        super.layoutSubviews() 
        let separators = self.subviews.filter({$0.bounds.height < 1 && $0.bounds.height > 0}) 
        separators.forEach({ 
         $0.layer.backgroundColor = UIColor.red.cgColor 
        }) 
    

这是什么?

+2

你还试过在真实设备上测试吗? – ronatory

+0

你不会在真实设备中遇到问题,或者另一种方法是让你的模拟器屏幕变大(cmd + 1) – Janmenjaya

+0

是的,它为iPhone 7(iOS 10.2.1)重现 –

回答

1

好的,我明白了。这些不可见的视图不是分隔符,它们是在我使我的边距相对时创建的。

1

用于更换隔膜,或显示它以某种方式或显示一个用于每个段不同的正确的方法是这样的:

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
     switch indexPath.section { 
     case 1: 
      cell.separatorInset = UIEdgeInsetsMake(0.0, tableView.bounds.size.width, 0.0, 0); 
      let additionalSeparatorThickness = CGFloat(1) 
      let additionalSeparator: UIView = UIView(frame: CGRect(x: 15.0, y: cell.frame.size.height - additionalSeparatorThickness, 
                    width: cell.frame.size.width-30.0, 
                    height: additionalSeparatorThickness)) 
      additionalSeparator.backgroundColor = UIColor.Red 
      cell.addSubview(additionalSeparator) 
     default: 
      break; 
     } 
    } 

在上面的示例(与一些定制为线宽度,高度, ecc),对于第1部分中的所有行,我们绘制一个红线分隔符,而在其他部分中,我们不显示任何内容。

+0

我认为分隔符高度是0.5吗?对不起,但它不是我的问题的答案,我设置颜色寻找隐形线。谢谢 –

相关问题