2017-02-17 59 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嗎?對不起,但它不是我的問題的答案,我設置顏色尋找隱形線。謝謝 –

相關問題