CollectionViewCell Draw Rect - PullRequest
       11

CollectionViewCell Draw Rect

0 голосов
/ 19 марта 2019

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

class UserCell: UICollectionViewCell {

    override func draw(_ rect: CGRect) {

        let center = CGPoint(x: self.center.x - 1, y: 41)

        let circularPath = UIBezierPath()
        circularPath.addArc(withCenter: center, radius: 36, startAngle: 0, endAngle: CGFloat(2 * Double.pi), clockwise: true)

        UIColor.red.setStroke()
        circularPath.lineWidth = 2
        circularPath.stroke()


    }

    override init(frame: CGRect) {
        super.init(frame: frame)

        backgroundColor = UIColor.white
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

enter image description here

Что мне здесь не хватает?

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Возможно, вы захотите определить свою точку center по-другому. Точка center указана в точках в системе координат ее суперпредставления . Либо попробуйте преобразовать точку ячейки center из системы координат ее суперпредставления, либо используйте вместо нее границы ячейки и соответствующим образом скорректируйте значения x и y.

let center = self.convert(self.center, from: self.superview)

let center = CGPoint(x: bounds.midX, y: bounds.midY)

CollectionViewCell

0 голосов
/ 20 марта 2019

Создан новый класс, соответствующий UIView (), добавлена ​​информация bezierPath внутри функции рисования. Затем подкласс этого класса внутри ячейки collectionView. Работает как положено.

0 голосов
/ 19 марта 2019

Ячейки представления коллекции настроены для отображения с помощью метода UICollectionViewDataSource cellForItemAt (). Ячейки используются повторно и не будут автоматически перерисовываться для каждой «новой» ячейки. Вместо переопределения draw (rect) добавьте подпредставления в ячейку и настройте подпредставления в cellForItemAt ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...