2016-03-23 2 views
0

У меня есть группа UIImageView, которые хранятся в массиве. Аналогичным образом я хочу анимировать определенное количество этих ImageView. Таким образом, я пытался использовать следующий код:Swift UIView.animateWithDuration и 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) 

Однако на этой линии:

for index in startingIndex..< lowerViews.count { 

Xcode дает мне ошибку:

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

Однако, я не что это действительно проблема. Мне кажется, что это произвольная синтаксическая ошибка, получаемая Xcode, потому что я использую for-loop внутри параметра «animation». Поскольку я все еще многому учусь о Swift, я не знаю, почему это не сработает, и поэтому, если это предположение верно, я хотел бы знать, почему и как я могу обойти это.

Если это не так, сообщите мне, потому что в любом случае мне нужно решить проблему.

Заранее спасибо

ответ

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

+0

Спасибо! Решила мою проблему –

+0

отличный глаз ... :) –

Смежные вопросы