перевести UIImageView вниз

Я кодирую игру для iOS и пытаюсь переместить экземпляр Tile (Tile является подклассом UIImageView.)

Именно то, что я хочу, это чтобы мой экземпляр Tile перемещался из точки A (x, y) в точку B (x, y + 70) за 0,20 с.

Я уже читал этот пост, в котором описывается аналогичная проблема: изменить положение UIImageView< /а>

Я использовал рекомендованный код и адаптировал его к своему случаю. Итак, вот код метода, который я использую:

- (void) moveTileDown {
    [UIView animateWithDuration:0.20
                          delay:1.0
                        options: UIViewAnimationOptionCurveEaseIn
                     animations:^{
                         self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y + 70, self.frame.size.width, self.frame.size.height);
                     }
                     completion:^(BOOL finished){
                         NSLog(@"Done!");
                     }];
}

Но теперь вот моя проблема. Вместо перехода от A(x,y) к B(x,y+70) при вызове метода моя плитка переходит к C(x,y-70) и возвращается к A через 0,20 с.

Чтобы предоставить больше информации, метод moveTileDown вызывается из цикла for, который выполняется в другом контроллере.

        for (int i=0; i <firstTileRow; i++){
            [[[_lines objectAtIndex:i] objectAtIndex:firstTileColumn] moveTileDown];
            [[[_lines objectAtIndex:i] objectAtIndex:secondTileColumn] moveTileDown];
        }

Есть идеи?


person Olivier_d    schedule 30.10.2014    source источник
comment
Замените эту опцию UIViewAnimationOptionBeginFromCurrentState на UIViewAnimationOptionCurveEaseIn.   -  person iphonic    schedule 30.10.2014
comment
@iphonic хорошо, обновлено :) (но это не меняет проблемы)   -  person Olivier_d    schedule 30.10.2014
comment
Теперь вопрос: когда вы вызываете функцию moveTileDown? Вы можете обновить полную реализацию?   -  person iphonic    schedule 30.10.2014
comment
@iphonic Я добавил больше деталей и обновил описание своей проблемы. На самом деле плитка не возвращается из B в A, а прыгает в C и возвращается в A. Движение правильное и в правильном направлении, но оно начинается не с начального положения плитки.   -  person Olivier_d    schedule 30.10.2014
comment
Можете поставить NSLog(@"Initial Frame: %@",NSStringFromCGRect(self.frame)); в первую строку функции moveTileDown перед блоком анимации и посмотреть лог..   -  person iphonic    schedule 30.10.2014
comment
@iphonic на самом деле я нашел файл pb. Это из-за автоматической раскладки. Я просто снял флажок «Использовать автоматическую компоновку» в конструкторе интерфейсов и получил ожидаемое поведение. Думаю, мне нужно больше узнать о том, как работает автоматическая компоновка.   -  person Olivier_d    schedule 31.10.2014