我有两个UIViews,我想以相同的速度同时移动。
[UIView animateWithDuration:0.25 animations:^ {
myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0);
myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 100.0);
}];
但是,执行上述操作意味着myView2
的动画速度是myView1
的两倍。
如何让两个视图以相同但相同的速度进行动画处理(以便一个完成,然后是另一个,但是它们会同时开始制作动画)?
答案 0 :(得分:5)
同时启动它们并将需要两次旅行的动画提供两倍的时间:
[UIView animateWithDuration:0.25 animations:^ {
myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 100.0);
}];
[UIView animateWithDuration:0.5 animations:^ {
myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0);
}];
基本速度数学。
另一种方法:
[UIView animateWithDuration:0.25 animations:^{
myView1.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0);
myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0);
}
completion:^{
[UIView animateWithDuration:0.25 animations:^{
myView2.frame = CGRectMake(0.0, 0.0, 100.0, myView1.frame.size.height - 50.0);
}];
}];
我不确定哪种方法更好或者更受欢迎。
第一种方法使用两个单独的animateWithDuration
调用,每个视图一个,其中一个在两倍的时间内设置两倍的距离(因此整体速度相同)。
第二种方法通过animateWithDuration
块使用对completion
的嵌套调用。首先,两个视图以相同的速度动画到相同的大小。接下来,需要两倍距离的视图为剩余距离(以相同的速度)设置动画。