UIView阻止动画从左到右,从左到右移动视图

时间:2011-12-30 03:24:07

标签: ios cocoa-touch uiview uiviewanimation

我不想为一个形状像箭头的视图制作动画,我希望它能够从左到右,从左到右依次制作动画等等。

下面的代码不起作用,我猜我需要一个路径,但不知道如何在UIView块动画中这样做。

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

} completion:^(BOOL finished) {

}];

2 个答案:

答案 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