Ich habe derzeit eine Animation, die als Fortschrittsanzeige für ein Video verwendet wird, funktioniert super. Aber jetzt haben wir eine Funktion, die es dem Benutzer ermöglicht, 2,5 Sekunden vorwärts in das Video zu springen, indem er darauf klickt, und so versuche ich die Fortschrittsanzeige-Animation zu implementieren, um 2,5 Sekunden in die Animation zu überspringen. Wie würde ich die Animation 2,5 Sekunden überspringen? Ich habe versucht "animationGroup.timeOffset = 2.5", aber es funktioniert nicht.Vorwärtsspringen in CABasicAnimation (iOS)
func performProgressIndicatorAnimation(duration: Float64) {
layer.mask = nil
layer.speed = 1.0
self.duration = duration
let strokeStartAnimation = CABasicAnimation(keyPath: "strokeStart")
strokeStartAnimation.fromValue = 0
strokeStartAnimation.toValue = 1
strokeStartAnimation.duration = duration
strokeStartAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animationGroup = CAAnimationGroup()
animationGroup.duration = duration
animationGroup.animations = [strokeStartAnimation]
externalCircle.addAnimation(animationGroup, forKey: "animationGroup")
}
// Hier ist, wo mein externalCircle gezogen wird:
private func drawCircles() {
let externalCirclePath = UIBezierPath(roundedRect: CGRectMake(0, 0, bounds.height, bounds.height), cornerRadius: bounds.height/2)
externalCircle.path = externalCirclePath.CGPath
externalCircle.fillColor = UIColor.clearColor().CGColor
externalCircle.strokeColor = UIColor.whiteColor().CGColor
externalCircle.lineWidth = 2
let internalCircleRadius = bounds.size.height/5
let internalCirclePath = UIBezierPath(roundedRect: CGRectMake(0, 0, internalCircleRadius * 2, internalCircleRadius * 2), cornerRadius: internalCircleRadius)
internalCircle.path = internalCirclePath.CGPath
internalCircle.fillColor = UIColor.whiteColor().CGColor
internalCircle.position = CGPointMake(CGRectGetMidX(bounds) - internalCircleRadius,
CGRectGetMidY(bounds) - internalCircleRadius);
layer.addSublayer(internalCircle)
layer.addSublayer(externalCircle)
}
Ja das ist was ich tun musste (siehe meine Antwort) –