2017-01-19 5 views
0

Ich möchte die Farbe einer UIView in einer while-Schleife ändern. Ich rufe start() vom Hauptthread an.UIViews Hintergrundfarbe in einer While-Schleife aktualisieren

Beispiel:

func start() { 

    let item = Percolation(n: self.tileSideCount) 

    while (!item.percolates()) { 
     let v = Int(arc4random_uniform(UInt32(self.tileSideCount))) + 1 
     let j = Int(arc4random_uniform(UInt32(self.tileSideCount))) + 1 

     UIView.animate(withDuration: 0.3, delay: 0.0, options: [], animations: { 
      self.container?.viewWithTag(v)?.backgroundColor = UIColor.white 
      self.container?.viewWithTag(j)?.backgroundColor = UIColor.white 
     }, completion: { (finished: Bool) in 

     }) 

     if (!item.isOpen(i: v, j: j)) { 
      item.open(i: v, j: j); 
     } 
    } 
} 
+0

'self.container? .viewWithTag (v/j)' könnte sein – Callam

+0

Welcher Teil funktioniert nicht? – Losiowaty

+0

Sie ändern also zufällig Hintergrundfarben in Weiß? –

Antwort

1

Wenn Sie die Farben wollen von einem zum nächsten in der Reihenfolge zu ändern, müssen Sie Ihre Animation Anrufe mit Verzögerung und Dauer Werte vorzulegen, damit die vorherige Animation als nächste fertig ist beginnt.

Angenommen, die Dauer jeder Animation beträgt 1 Sekunde. Der erste startet mit einer Verzögerung von 0, der zweite mit einer Verzögerung von 1 Sekunde usw.

(Gleiches gilt für andere Dauern. Wenn Ihre Dauer 0,3 Sekunden beträgt, starten Sie jede weitere Animation zusätzlich 0,32 Sekunden später als die vorherige.)

Verwandte Themen