我试图打开两个子视图,然后关闭,所以我尝试了这个
- (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);
}
];
}
我需要两个视图更改位置,然后来到相同的位置,但是当我调用这两个方法打开缓慢但非常快速关闭。
所以请任何人帮助我,如何在关闭视图时设置计时器
感谢高级。
答案 0 :(得分:1)
你的结束部分;
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){
}];
希望这会有所帮助.. :)
答案 1 :(得分:0)
试试这个。
-(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);
}];
}];}