尝试一次执行多个动画

时间:2014-05-28 12:13:20

标签: ios objective-c uiview

奇怪的是,我无法在网上找到任何答案,但似乎如果你想以不同的速度同时移动6 UIViews,你就不能这样做

如果我正在使用这个例子中的一个,我知道有时只有一些观点正在移动,有时甚至全部(正如预期的那样)。

无法同时移动6-7-8 UIViews 持续时间

1

for(UIButton *button in buttons)
{

    float r=   arc4random()%10;
    float t =0.1+ 1.0/r;
[UIView beginAnimations:@"Anim0" context:nil];
[UIView setAnimationDuration:t];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:button cache:YES];

CGRect newframe=button.frame;
newframe.origin.y=0;
button.frame=newframe;

[UIView commitAnimations];

}

2

 for(UIButton *button in buttons)
    {
         int random=arc4random()%10;
        float time=0.5+ 1/(float)random;
        CGRect newframe=button.frame;
        newframe.origin.y=0;
        [UIView transitionWithView:button
                          duration:time
                           options:UIViewAnimationOptionCurveEaseInOut
                        animations:^{
                           button.frame=newframe;
                        }
                        completion:nil];
    }

2 个答案:

答案 0 :(得分:1)

您需要限制随机数生成器。

你的功能......

arc4random() % 10;

有时会返回0。

然后把它传递给......

float time = 0.5 + 1/random;

time = inf

您可以通过注销时间值来看到这一点。

inf的时间会使按钮无法动画。

答案 1 :(得分:0)

当然有可能。问题是你发错了信息。根据您的第二个片段,这是一个如何完成的示例:

for (UIButton *button in self.buttons){

    int random = arc4random()%10;
    float time = 0.5 + 1/(float)random;
    CGRect newframe = button.frame;
    newframe.origin.y = 0;

    [UIView animateWithDuration:time
                          delay:0.0f
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         button.frame = newframe;
                     } completion:^(BOOL finished) {
                         // The animation have finished
                     }];
}