Swift UIView.animateWithDuration和For-Loops

时间:2016-03-23 12:40:06

标签: ios swift animation for-loop

我有一组存储在数组中的UIImageViews。我想以相同的方式为一定数量的这些ImageView制作动画。因此,我一直在尝试使用以下代码:

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)

但是在这一行:

for index in startingIndex..< lowerViews.count {

Xcode给了我错误:

  

预期'{'启动每个for循环的主体

但是,我不认为这确实是个问题。在我看来,这是Xcode获取的任意语法错误,因为我在'animation'参数中使用for循环。因为我还在学习很多关于Swift的知识,所以我不知道为什么这不会起作用,所以如果这个假设是正确的,我想知道为什么以及如何解决这个问题。

如果不是这样,请告诉我,因为无论哪种方式我都需要解决问题。

提前致谢

1 个答案:

答案 0 :(得分:4)

这是一个棘手的错误(注意..<周围的空格)。

for index in startingIndex ..< lowerViews.count {

将起作用或

for index in startingIndex..<lowerViews.count {

会起作用但是:

for index in startingIndex..< lowerViews.count {

没有工作。

原因是当使用startingIndex..<时,..<被认为是后缀(一元)运算符(不是中缀运算符)。因此,整个表达式停止有意义,你开始得到奇怪的错误。

另见what are the rules for spaces in swift