圆角半径不适合动态分组的 tableView swift

Corner radius not properly fit in dynamic grouped tableView swift

我已经根据数据动态创建了一个Grouped TableView。基于数据 tableView 单元格生成自动高度,因此每个单元格具有不同的 rowHeight。我已经使用 self.tableView.rowHeight = 50

进行了相应的设置

但问题是我正在使用角半径,但我不想在每个单元格上都使用角半径。 我正在使用 grayBox UIView 和其中显示的所有单元格。圆角半径适用于单元格或 grayBox 的开始,仅适用于 grayBox 单元格的结尾,但它适用于每个单元格。我怎样才能在开始和底部应用角半径?

viewDidLoad() tableView 行高的代码

self.tableView.rowHeight = 50

动态分组 TableView 代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = UITableViewCell()      
        cell.backgroundColor = UIColor.clear
        cell.selectionStyle = .none
        let grayBox = UIView(frame: CGRect(x: 5, y: 0, width: self.view.frame.size.width - 11, height: 50))
        grayBox.backgroundColor = ("#cfd8dc").toColor()
        grayBox.layer.cornerRadius = 5
        grayBox.layer.borderColor = UIColor(red:0.80, green:0.80, blue:0.80, alpha:1.0).cgColor
        grayBox.layer.borderWidth = 1.0
        cell.contentView.addSubview(grayBox)

        return cell

    }

1- 使用出队

let cell = tableView.dequeueReusableCell(withIdentifier: "cell")!

而不是

let cell = UITableViewCell()     

2- 通过删除标签

清除此处的子视图
let grayBox = UIView(frame: CGRect(x: 5, y: 0, width: self.view.frame.size.width - 11, height: 50))
grayBox.tag = 333
cell.contentView.subviews.forEach { 
   if [=12=].tag == 333 {
      [=12=].removeFromSuperview()
   }
} 
cell.contentView.addSubview(grayBox)

3- 角半径

if  indexPath.row == 0 || indexPath.row == arr.count - 1 {
   grayBox.layer.cornerRadius = 5
}
else {
  grayBox.layer.cornerRadius = 0
}