编辑时重置UITableViewCell的角半径

时间:2019-11-25 03:34:41

标签: ios swift xcode uitableview cornerradius

我有一个UITableView,其中包含带有自定义拐角半径的UITableViewCells列表。滑动进行编辑时,例如删除/插入,将拐角半径重置为0。

Image of cell's corner radius being reset

我尝试在编辑时设置拐角半径:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    guard let cell = tableView.cellForRow(at: indexPath) as? HabitTableViewCell else { return }
    cell.layer.cornerRadius = 13
    if editingStyle == .delete {
        controller.delete(habit: frc.object(at: indexPath))
    }
}

我也尝试过以类似的方式实现willBeginEditingRowAt,以使拐角半径保持不变。我尝试的最后一件事是在TrailingSwipeActionsConfigurationForRowAt中创建一个自定义UIContextualAction,但它没有任何改变。

大约四年前有一个similar question asked,但从未找到最终的解决方案。感谢您提供任何帮助或见识!

1 个答案:

答案 0 :(得分:4)

您需要将拐角半径和边界设置为contentView

cell.contentView.layer.cornerRadius = 13

将此代码添加到awakeFromNib类的layoutSubviewsUITableViewCell方法中。

override func awakeFromNib() {
    super.awakeFromNib()
    self.contentView.layer.cornerRadius = 13

    // Your border code here (set border to contentView)
    self.contentView.layer.borderColor = UIColor.blue.cgColor
    self.contentView.layer.borderWidth = 3
}

我希望这会对您有所帮助。