2016-12-28 8 views
1

Ich arbeite seit 4 Monaten an swift und arbeite seit 2 Wochen an diesem Splash-Screen. Es ist Auto in der Mitte des Bildschirms und 2 Bilder (Stadt & Gelände) in Schleife von rechts nach links (RtoL) als Hintergrund bewegen. Unten finden Sie gif von meiner android app genommen:Bild bewegt sich in Schleifenanimation - Swift

Taken from my Android app

Ich bin nur in der Lage Hintergrund RTOL aber nur einmal zu bewegen. Ich versuchte es mit anderen Animationsoptionen, aber keiner schien zu funktionieren. Sie können sehen, dass diese Bilder viel breiter sind als der eigentliche Bildschirm, es sollte also kein Problem geben. Überprüfen Sie mein Ansatz unten: Bild RTOL ohne Spalt in Schleife zu bewegen wie in der obigen gif

func animate(_ image: UIImageView) { 
UIView.animate(withDuration: 1.0, delay: 0.0, options: [.curveLinear], 
animations: {image.center.x -= 10}, 
completion: {_ in self.animate(image)})} 

Meine einzige Voraussetzung ist.

Thanks :)

+0

hilft Wenn dieser gif ist, was Sie wollen, warum es nicht verwenden? Holen Sie sich einfach die Bilder aus dem Gif und fügen Sie sie zu UIImageView.animationImages hinzu. Setzen Sie dann animationDuration auf das, was Sie wollen, und rufen Sie einfach imageView.StartAnimation auf. Es wird Schleife, bis Sie stopAnimation anrufen –

+0

Sie sind Idee ist gut, aber ein Gif mit dieser Qualität würde es sehr groß machen, dass meine App nicht leisten kann. –

+0

Dann müssten Sie vielleicht auf Bildansichten verdoppeln, so dass Sie das gleiche Bild (als eine andere Instanz) an das Ende des ersten anhängen können, wenn der rechte Rand des Bildes den rechten Rand des Bildschirms erreicht? –

Antwort

2

Scheint, wie Sie nur das Bild nach links bewegen, bald wird das Bild aus dem Bildschirm bewegt werden und Sie würden es nicht in der Lage sein, zu sehen. Versuchen Sie, das Bild nach jeder Iteration der Animation wieder auf seine ursprüngliche Position zu setzen. Sie können es mit CGAffineTransform tun wie so:

func animate(_ image: UIImageView) { 
    UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { 
     image.transform = CGAffineTransform(translationX: -100, y: 0) 
    }) { (success: Bool) in 
     image.transform = CGAffineTransform.identity 
     animate(image) 
    } 
} 

Hoffnung, die

+0

Es hat nicht funktioniert :( Eigentlich eine Iteration ist: Linkes Ende des Bildes am linken Rand des Bildschirms -> Rechtes Ende des Bildes am rechten Rand des Bildschirms. Neueinstellung Iteration hilft nicht, eine perfekte Schleife zu erstellen. Nach Abschluss der 1. Iteration "Das linke Ende des Bildes sollte am rechten Rand des Bildschirms sein", um es fehlerfreie Schleife zu machen. –