В моей таблице для разделов используются ячейки с закругленными углами. Однако на некоторых устройствах iOS закругленные углы с правой стороны не видны. Это может быть менее связано с кодом и больше связано с ограничениями ...

0
Vad 13 Янв 2021 в 00:53

1 ответ

Лучший ответ

Вам нужно создать подкласс UITableViewCell и переопределить функцию layoutSubview() и установить там путь к CAShapeLayer.

final class MyTableViewCell: UITableViewCell {

    private lazy var maskLayer = CAShapeLayer()

    var corners: UIRectCorner = [] {
        didSet {
            setNeedsLayout()
            updatePath(with: corners)
        }
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        updatePath(with: corners)
    }

    private func updatePath(with corners: UIRectCorner) {
        let path = UIBezierPath(
            roundedRect: bounds,
            byRoundingCorners: corners,
            cornerRadii: CGSize(width: 15, height:  15)
        )
        maskLayer.path = path.cgPath
        layer.mask = maskLayer
    }

}

А затем пройти углы в cellForRowAt

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = MyTableViewCell(
        style: UITableViewCell.CellStyle.default, reuseIdentifier: "mycell"
    )
    cell.corners = [.topRight, .topLeft]

    // ...

    return cell
}

1
Witek Bobrowski 12 Янв 2021 в 22:08