UIView.animateKeyframes(withDuration: 3, delay: 0, options: [], animations: { UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 1, animations: { let scaledBy = CGAffineTransform(scaleX: 1.0, y: 1.0) self.firstView.transform = scaledBy.translatedBy(x: 120, y: 20).rotated(by: CGFloat.pi/2) }) UIView.addKeyframe(withRelativeStartTime: 1, relativeDuration: 1, animations: { let scaledBy = CGAffineTransform(scaleX: 1.5, y: 1.5) self.firstView.transform = scaledBy.translatedBy(x: 40, y: 60).rotated(by: -CGFloat.pi/2) self.firstView.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2) }) }, completion: {_ in})
这似乎是一个非常古老的问题。不过,我希望我的回答会有所帮助。这里的问题是因为你没有理解 relativeStartTime 和 relativeDuration 参数。这里的关键词是 relative UIView.addKeyframe 函数应该发生在0和1之间。
relativeStartTime
relativeDuration
relative
UIView.addKeyframe
UIView.animateKeyframes(withDuration: 3, delay: 0, options: [], animations: { }, completion: {_ in})
该时间线从0到1(0%到100%)。这意味着 相对的 相对的 开始时间也不能超过1。