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



我试着打开两个子视图,然后关闭,所以我试着像这个一样

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

相关内容

  • 没有找到相关文章

最新更新