2017-05-08 7 views
2

nur eine kurze Frage Ich habe in Bezug auf ein bewegliches Hintergrundbild für meine aktuelle Anwendung Setup animiert. Im Wesentlichen möchte ich mein momentan noch Hintergrundbild von links nach rechts endlos über meine Ansicht scrollen lassen; aber ich habe Mühe, alles zusammenzufügen. Aus einer Vielzahl verschiedener anderer Quellen habe ich diese Funktion zusammengestellt, die momentan nicht funktioniert, und ich kann wirklich nicht herausfinden, wie oder warum. Swift - animieren UIImageView image

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 
      self.animate(image) 
     } 
    } 

Jede Hilfe/Unterstützung ist enorm geschätzt!

+0

Welche Art von Animation benötigen Sie? erkläre klar –

+0

Sorry für den Mangel an Klarheit! Ich wünsche mir, dass meine Animation etwas in dieser Richtung ist; https://cdn.dribbble.com/users/279765/screenshots/1335470/marioscroll_real_real.gif – Jordy

Antwort

1

Sie brauchen nicht CAffineTranform innerhalb animateWithDuration zu verwenden, können Sie einfach das neue Zentrum wie definieren:

let oldCenter = image.center 
let newCenter = CGPoint(x: oldCenter.x - 100, y: oldCenter.y) 

UIView.animate(withDuration: 1, delay: 0, options: .curveLinear, animations: { 
    image.center = newCenter 
}) { (success: Bool) in 
    print("Done moving image") 
    } 

Hoffe, es hilft.

+0

Nach dem Versuch, Ihren Vorschlag zu implementieren, wird vorgeschlagen, den Code wie folgt anzupassen: last oldCenter = background.center lassen Sie newCenter = CGRect (Herkunft: oldCenter.x - 100, Größe: oldCenter.y) UIView.animate (mitDauer: 5, Verzögerung: 0, Optionen: .curveLinear, Animationen: { background.center = newCenter }) {(Erfolg: Bool) in drucken ("Done moving image") } Aber dann bin ich eine binäre operator error als "-" kann nicht angewendet werden, um "Int" oder "CGFloat" – Jordy

+0

Sorry meine schlechte es ist CGPoint nicht CGRect. Versuchen Sie jetzt mit CGPoint –

+0

Entwickeln Sie definitiv in der Animation. Es beginnt langsam nach links zu gleiten und stoppt dann etwa 1/6 durch das Bild. Darüber hinaus scheint es nicht von der rechten Seite des Bildes wieder zu erscheinen; also implementiere ich diese funktionalität? – Jordy