关闭子视图时如何设置计时器

时间:2014-10-13 08:17:28

标签: ios objective-c uiview uiviewanimation handshake

我试图打开两个子视图,然后关闭,所以我尝试了这个

- (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);
                     }
    ];
}

我需要两个视图更改位置,然后来到相同的位置,但是当我调用这两个方法打开缓慢但非常快速关闭。

所以请任何人帮助我,如何在关闭视图时设置计时器

感谢高级。

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);
     }];

 }];}