2014-01-29 35 views
1

我有两个UIView,我想以相同的速度同时移动。使用animateWithDuration以相同的速度动画两个视图

[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

你有没有注意到你正在将view1的高度分配给view2,并且顺便提一句,如果两个视图的大小相同,第二个视图将以双倍速度进行,因为它必须将高度最小化为几乎两倍比view1 – channi

+0

是的,我意识到。 – BytesGuy

+0

那么问题是否解决? – channi

回答

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,每个视图一个,一个动画的两倍时间的距离(所以相同的速度整体)的两倍。

第二种方法通过completion块使用对animateWithDuration的嵌套调用。首先,两个视图以相同的速度动画到相同的大小。接下来,需要走两次距离的视图会为剩余距离(相同速度)生成动画。

相关问题