我试着打开两个子视图,然后关闭,所以我试着像这个一样
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if(event.type == UIEventSubtypeMotionShake)
{
[self shakeView];
//[self open];
}
}
-(void)shakeView
{
[UIView animateWithDuration:2.8
animations:^{
//OPEN
firstView.frame = CGRectMake(0, -40, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame = CGRectMake(0, 260, self.view.frame.size.width, self.view.frame.size.height/2);
// Its final location
}
completion:^(BOOL finished) {
// Closed
firstView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame = CGRectMake(0,230 , self.view.frame.size.width, self.view.frame.size.height/2);
}
];
}
我需要两个视图改变位置,然后到达相同的位置,但当我称这两种方法打开得很慢,但关闭得很快。
关闭视图时如何设置计时器?
您的结束部分;
firstView.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame=CGRectMake(0,230 , self.view.frame.size.width, self.view.frame.size.height/2);
不在动画块内。打开的持续时间为2.8秒,但关闭将在没有任何持续时间的情况下执行。
将闭合部分放入另一个动画块中。
[UIView animateWithDuration:0.4 animations:^{
firstView.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame=CGRectMake(0,230 , self.view.frame.size.width, self.view.frame.size.height/2);
}completion:^(BOOL finished){
}];
试试这个。
-(void)shakeView
{
[UIView animateWithDuration:2.8
animations:^{
//OPEN
firstView.frame =CGRectMake(0, -40, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame =CGRectMake(0, 260, self.view.frame.size.width, self.view.frame.size.height/2);
// its final location
}
completion:^(BOOL finished)
{
//Closed
[UIView animateWithDuration:0.5 animations:^{
firstView.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
secondView.frame=CGRectMake(0,230 , self.view.frame.size.width, self.view.frame.size.height/2);
}];
}];}