Как добавить анимацию внутри UICollectionViewCell - PullRequest
1 голос
/ 06 апреля 2019

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

В идеале я хотел бы, чтобы анимация начиналась, когда ячейка становится видимой.

let shapeLayer = CAShapeLayer()
let trackLayer = CAShapeLayer()

func setupBezierPaths() {
    let center = self.center
    let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)

    // Create a track layer
    trackLayer.path = circularPath.cgPath
    trackLayer.strokeColor = UIColor.lightGray.cgColor
    trackLayer.lineWidth = 10
    trackLayer.lineCap = CAShapeLayerLineCap.round
    trackLayer.fillColor = UIColor.clear.cgColor

    layer.addSublayer(trackLayer)

    // Create a layer that is animated
    shapeLayer.path = circularPath.cgPath
    shapeLayer.strokeColor = UIColor.green.cgColor
    shapeLayer.lineWidth = 10
    shapeLayer.strokeEnd = 0
    shapeLayer.lineCap = CAShapeLayerLineCap.round
    shapeLayer.fillColor = UIColor.clear.cgColor

    layer.addSublayer(shapeLayer)
}

Для UICollectionViewCell я не уверен, куда поместить настоящий код анимации.Я пробовал это в init, но слой дорожки даже не появляется.Вот код для анимации:

    let basicAnimation = CABasicAnimation(keyPath: "strokeEnd")
    basicAnimation.toValue = 1
    basicAnimation.duration = 1
    basicAnimation.fillMode = CAMediaTimingFillMode.forwards
    basicAnimation.isRemovedOnCompletion = false
    shapeLayer.add(basicAnimation, forKey: "simpleAnimation")

1 Ответ

0 голосов
/ 07 апреля 2019

Я думаю, вы можете использовать это в этом методе CollectionView.

 func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)

и изменять слои с помощью cell.layer

...