2016-03-19 17 views
0

Ich versuche, ein UILabel und ein UIButton auf dem Bildschirm meiner App zu bewegen, sobald etwas passiert, aber wenn ich eine Animation dafür verwende, funktioniert es nicht und wenn die Animation soll passieren, die Komponenten bewegen sich nicht auf den Bildschirm. Hier ist der Code für die Animation:Swift Animation funktioniert nicht

UIView.animateWithDuration(2) {() -> Void in 
        self.label.center = CGPointMake(self.view.center.x, self.label.center.y) 
        self.again.center = CGPointMake(self.view.center.x, self.again.center.y) 
       } 

Jede Hilfe mit diesem Problem wird sehr geschätzt werden!

+1

Wir brauchen etwas mehr Kontext - wo nennst du das? – tktsubota

+0

Ich stimme @TroyT zu. Wir brauchen auch etwas mehr Code. Erschaffst du die Objekte im Storyboard? –

+0

Nein, ich habe sie in main.storyboard mit der grafischen Benutzeroberfläche erstellt, nicht programmgesteuert. In viewDidLayoutSubviews lasse ich die Komponenten vom Bildschirm verschwinden und dann, wann immer ein bestimmtes Ereignis ausgeführt wird und ich weiß, wann das ausgeführt wird, sollen die Komponenten wieder auf den Bildschirm animiert werden. –

Antwort

1

Sie sollten dies versuchen. Mit layoutIfNeeded() wird alles neu positioniert.

UIView.animateWithDuration(2) {() -> Void in 

       self.label.center = CGPointMake(self.view.center.x, self.label.center.y) 
       self.again.center = CGPointMake(self.view.center.x, self.again.center.y) 
       self.view.layoutIfNeeded() 
      } 
+0

Sorry, das hat nicht funktioniert, und ich habe während dieser Animation etwas Druck auf die Konsole gemacht, und es wurde gedruckt, aber die Komponenten wurden nicht auf den iPhone-Bildschirm verschoben –

+0

Statt self.view .layoutIfNeeded() versuche self.label.layoutIfNeeded() und self.again.layoutIfNeeded() –

0

Versuchen Sie dies!

UIView.animateWithDuration(1.0, 
delay: 2.0, 
options: .CurveEaseInOut , 
animations: { 
self.label.center = CGPointMake(self.view.center.x, self.label.center.y) 
self.again.center = CGPointMake(self.view.center.x, self.again.center.y) }, 
completion: { finished in 
    println("Bug moved left!") 
    self.faceBugRight() 
}) 
}