奇怪的是,我无法在网上找到任何答案,但似乎如果你想以不同的速度同时移动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];
}
答案 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
}];
}