2017-03-06 111 views
1

我要讓我的tableView看起來像這樣的:四捨五入的UITableViewCell

enter image description here

,我有問題的。只有當我點擊牢房時,我的右角才圓了。當視圖顯示它看起來像這樣:

enter image description here

和這樣的自來水後:

enter image description here

這裏是我的代碼:

extension UITableViewCell { 
     func round(corners: UIRectCorner, withRadius radius: CGFloat) { 
     let mask = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 
     let shape = CAShapeLayer() 
     shape.frame = self.bounds 
     shape.path = mask.cgPath 
     self.layer.mask = shape 
     } 
    } 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    ... 
    if numberOfRows(in: indexPath.section) == 1 { 
     cell.round(corners: [.bottomLeft, .bottomRight, .topLeft, .topRight], withRadius: 8) 
    } else { 
     if indexPath.row == 0 { 
     cell.round(corners: [.topLeft, .topRight], withRadius: 8) 
     } 
     if indexPath.row == numberOfRows(in: indexPath.section) - 1 { 
     cell.round(corners: [.bottomLeft, .bottomRight], withRadius: 8) 
     } 
    } 
    return cell 
    } 
+0

嘗試將這些代碼移動到'willDisplayCell' – Tj3n

回答

3

這是因爲當你第一次將你的細胞四捨五入時,它不會在任何超視圖上繪製,因此它的框架是未知的。試圖把在角落

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 

    } 

另外,我強烈建議你不要四捨五入的細胞本身,而是添加背景着眼於細胞,使細胞的背景顏色清晰(單元格的內容視圖的爲好),使該視圖的圓角。祝你好運!

+1

非常感謝,我會嘗試背景視圖的事情,也許它會解決一些其他問題。 – dsk1306

0

你必須創建自定義的UITableViewCell爲您的設計。併爲tableviewcell Parentview採取cornerradius = 2。

+0

我已經有自定義單元格,但它非常簡單(只有2個iboutlets)。而且我不確定我是否理解了答案的第二部分。 – dsk1306

+0

parentview.cornerradius = 2(自定義單元格) –

0

根據你的屏幕截圖, 我認爲,你的約束沒有正確設置。

您可以使用自定義xib作爲單元格。