swift Перерисовка view в tableview

Создал кастомный view

override func draw(_ rect: CGRect)
    {
        let arrowPath = UIBezierPath()
        arrowPath.move(to: CGPoint(x: 0, y: 0))
        arrowPath.addLine(to: CGPoint(x: rect.width - 30, y: 0))
        arrowPath.addLine(to: CGPoint(x: rect.width, y: 30))
        arrowPath.addLine(to: CGPoint(x: rect.width, y: rect.height))
        arrowPath.addLine(to: CGPoint(x: 0, y: rect.height))
        arrowPath.addLine(to: CGPoint(x: 0, y: 0))
        arrowPath.close()
        ColorsConst.yellow.set()
        arrowPath.fill()
    }

эта вьюшка стоит у меня в tableview, проблема в том, что отображается криво

введите сюда описание изображения

хотя я в функции draw четко указываю размер линии. Скорее всего, это происходит из за того, что высота tableview плавающая UITableView.automaticDimension, если поставить строгую высоту ячейки, то таких проблем нет. Можно ли оставить динамическую высоту и решить проблему отображения?


Ответы (1 шт):

Автор решения: schmidt9

Скорее всего такой эффект возникает из-за повторного использования ячеек в таблице при скроллинге таблицы, поэтому вьюшки нужно принудительно перерисовывать. Попробуйте нечто подобное

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TestTableViewCell
        // ...
        cell.customView.setNeedsDisplay()
        return cell
    }
→ Ссылка