Анимация блока UIView перемещает взгляд влево и вправо и обратно влево
Я не хочу анимировать вид, который имеет форму стрелки, и я хочу, чтобы он анимировался слева направо, слева направо и т.д.
Этот код ниже не работает, я предполагаю, что мне нужен путь, но не знаю, как это сделать в анимации блока UIView.
[UIView animateWithDuration:.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
controller.view.frame = frame1;
controller.view.frame = frame2;
} completion:^(BOOL finished) {
}];
Ответы
Ответ 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