Подтвердить что ты не робот

Анимация блока UIView перемещает взгляд влево и вправо и обратно влево

Я не хочу анимировать вид, который имеет форму стрелки, и я хочу, чтобы он анимировался слева направо, слева направо и т.д.

Этот код ниже не работает, я предполагаю, что мне нужен путь, но не знаю, как это сделать в анимации блока UIView.

   [UIView animateWithDuration:.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
    controller.view.frame = frame1;
    controller.view.frame = frame2;

} completion:^(BOOL finished) {

}];
4b9b3361

Ответ 1

Вы можете использовать опцию UIViewAnimationOptionAutoreverse, попробуйте код ниже:

UIView * testView = [[UIView alloc] initWithFrame:CGRectMake(20.0f, 100.0f, 300.0f, 200.0f)];
[testView setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:testView];

[UIView animateWithDuration:0.3f
                      delay:0.0f
                    options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^{
                     [testView setFrame:CGRectMake(0.0f, 100.0f, 300.0f, 200.0f)];
                 }
                 completion:nil];

[testView release];

Он повторит движение справа налево, слева направо,... плавно.

Ответ 2

Предполагая, что frame1 является исходной позицией, а frame2 является конечной позицией перед повторением.

Проблема в том, что анимация вычисляется в конце runloop, поэтому frame1 игнорируется, и представление просто перемещается в frame2. Если вы переместите настройку frame1 за пределы блока, тогда она должна работать нормально. Если вы хотите, чтобы анимация воспроизводилась и переходила, вам нужно сделать ее autoreverse с помощью UIViewAnimationOptionAutoreverse