2016-03-23 10 views
0

Ich habe eine Gruppe von UIImageViews, die in einem Array gespeichert sind. Ich möchte eine bestimmte Anzahl dieser ImageViews auf die gleiche Weise animieren. So habe ich versucht, den folgenden Code zu verwenden:Swift UIView.animateWithDuration und For-Loops

var lowerViews: [UIImageView] = [imageView1, imageView2, imageView3, imageView4] 

var startingIndex = 1; 

UIView.animateWithDuration(0.3, delay: 0.1, options: UIViewAnimationOptions.CurveEaseInOut, animations: { 

    for index in startingIndex..< lowerViews.count { 
     lowerViews[index].frame.origin.y += 100 
    } 

}, completion: nil) 

jedoch an dieser Linie:

for index in startingIndex..< lowerViews.count { 

Xcode mir den Fehler gibt:

Expected '{' to start the body of each for-loop

Allerdings weiß ich nicht glaube, dass dies wirklich das Problem ist. Dies scheint mir ein willkürlicher Syntaxfehler zu sein, den Xcode bekommt, weil ich die for-Schleife innerhalb des 'animation'-Parameters verwende. Da ich immer noch viel über Swift lerne, weiß ich nicht, warum das nicht funktionieren würde. Wenn diese Annahme zutrifft, würde ich gerne wissen, warum und wie ich das umgehen kann.

Wenn dies nicht der Fall ist, lassen Sie es mich bitte wissen, denn so oder so muss ich das Problem umgehen.

Vielen Dank im Voraus

Antwort

4

Dies ist ein schwieriger Fehler (Anmerkung Räume um ..<).

for index in startingIndex ..< lowerViews.count { 

arbeiten oder

for index in startingIndex..<lowerViews.count { 

funktioniert aber:

for index in startingIndex..< lowerViews.count { 

wird nicht funktionieren.

Der Grund hierfür ist die Tatsache, dass, wenn startingIndex..< verwendet wird, dann wird als ein ..< Postfix (unären) -Operator (kein Infixoperator) sein. Daher hört der ganze Ausdruck auf, Sinn zu ergeben, und du beginnst seltsame Fehler zu bekommen.

Siehe auch what are the rules for spaces in swift

+0

Dank! Löste mein Problem –

+0

großes Auge ... :) –