我不想为一个形状像箭头的视图制作动画,我希望它能够从左到右,从左到右依次制作动画等等。
下面的代码不起作用,我猜我需要一个路径,但不知道如何在UIView块动画中这样做。
[UIView animateWithDuration:.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
controller.view.frame = frame1;
controller.view.frame = frame2;
} completion:^(BOOL finished) {
}];
答案 0 :(得分:33)
您可以使用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];
它会重复从右到左,从左到右,......顺利进行。
答案 1 :(得分:0)
假设frame1
是起始位置,frame2
是重复前的结束位置。
问题是动画是在runloop结束时计算的,因此frame1
被忽略,视图只会移动到frame2
。如果您将frame1
的设置移到块外,那么它应该可以正常工作。如果您希望动画可以前后播放,则需要使用autoreverse
UIViewAnimationOptionAutoreverse