переместить ячейку коллекции в случайную точку и по-прежнему срабатывать - PullRequest
0 голосов
/ 17 января 2019

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

    func randomPointAnimation(start: CGPoint, view: UICollectionViewCell ,collectionView: UICollectionView) {
    var toX: CGFloat = 0.0
    var toY: CGFloat = 0.0
    let backView = collectionView
    toX = randomXPoint(point: start.x, view: backView)
    toY = randomYPoint(point: start.y, view: backView)
    let randomTo = CGPoint(x: toX, y: toY)
    let control1 = randomControlPoint(x1: start, x2: randomTo)
    let control2 = randomControlPoint(x1: start, x2: randomTo)
    let path = createCurvePath(start: start, to: randomTo, control1: CGPoint(x: control1.x, y: control1.y), control2: CGPoint(x: control2.x, y: control2.y))
    let shapeLayer = CAShapeLayer()
    shapeLayer.path = path.cgPath
    shapeLayer.strokeColor = UIColor.blue.cgColor
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.lineWidth = 1.0
    self.view.layer.addSublayer(shapeLayer)

    let moveAlongPath = CAKeyframeAnimation(keyPath: "position")
    let curvePath = path
    moveAlongPath.path = curvePath.cgPath
    moveAlongPath.duration = 3
    moveAlongPath.calculationMode = CAAnimationCalculationMode.paced
    moveAlongPath.timingFunctions = [CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)]

    CATransaction.begin()
    CATransaction.setCompletionBlock({
        self.randomPointAnimation(start: randomTo, view: view, collectionView: backView)
    })
    let layer = createLayer(view: view)
    layer.add(moveAlongPath, forKey: "animate along Path")
    CATransaction.commit()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...