我想让我的tableView看起来像这样:

ios - 舍入UITableViewCell-LMLPHP

我有问题。只有在点击单元格后,我的右角才会变圆。当视图出现时,它看起来像这样:

ios - 舍入UITableViewCell-LMLPHP

然后点击后像这样:

ios - 舍入UITableViewCell-LMLPHP

这是我的代码:

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
  }

最佳答案

那是因为当您第一次对单元格进行四舍五入时,它不会在任何父视图上绘制,因此其帧是未知的。尝试拐弯处

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

    }

另外,我强烈建议您不要对单元格本身进行圆角处理,而应向单元格中添加背景视图,使单元格的背景颜色清晰(单元格的内容视图也是如此),并对该视图进行圆角处理。祝好运!

关于ios - 舍入UITableViewCell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42621520/

10-14 21:23