В настоящее время у меня есть слой (CALayer), который я масштабирую между этими масштабами, чтобы создать анимацию.Как я могу замедлить анимацию CALayer.transform?
private let invisibleScale = CATransform3DMakeScale(0.0,0.0,1.0)
private let fullScale = CATransform3DMakeScale(2.5,2.5,1.0)
Простого вызов функции ниже на моем слое слой одушевляет так же, как я хочу его (за исключением немного поститься).
animationLayer.transform = invisibleScale
animationLayer.transform = fullScale
Я пытался добавить CABasicAnimation с преобразованием в качестве значения, но это не работает, так как она восходит к исходному масштабу после окончания анимации. Что-то вроде этого:
let animation = CABasicAnimation(keyPath: "transform")
animation.toValue = NSValue(caTransform3D: invisibleScale)
animation.duration = animationDuration
animationLayer.add(animation, forKey: "transform")
Так что я попытался добавить animationLayer.transform = Fullscale в конце, чтобы обновить состояние после анимации.
let animation = CABasicAnimation(keyPath: "transform")
animation.toValue = NSValue(caTransform3D: invisibleScale)
animation.duration = animationDuration
animationLayer.add(animation, forKey: "transform")
animationLayer.transform = fullScale
Это приводит к анимации, которая выглядит точно так же, как и просто звоню:
animationLayer.transform = fullScale
Я также попытался вещи, как:
UIView.animate(withDuration: 10) {
self.animationLayer.transform = fullScale
}
Это также одушевляет с той же скоростью, как просто набирать анимациюLayer.transform = invisibleScale.
Любые советы о том, как сделать эту работу, будут высоко оценены!