2016-10-04 2 views
1

Моя проблема заключается в том, что у меня есть 2 анимации графики один за другим, но они выполняются вместе. Я думал написать метод с блоком завершения, но или я делаю что-то не так, или есть другой способ сделать это.Блок завершения для графической анимации

Анимация - это uiview, который перемещается из экрана (closeView) и по умолчанию анимация закрытия viewcontroller. Я хочу, чтобы viewcontroller закрывался, когда над анимацией вида.

Это то, что я сделал

- (void)closeViewWithCompletion:(void (^) (BOOL finish))handler { 
    [self closeView]; 
    handler(YES); 
} 

-(void) closeView{ 
     [self.myview setFrame:CGRectMake(
              -self.myview.frame.size.width 
              , self.myview.frame.origin.y 
              , self.myview.frame.size.width 
              , self.view.frame.size.height 
             )]; 


     CATransition *animation = [CATransition animation]; 
     [animation setType:kCATransitionPush]; 
     [animation setSubtype:kCATransitionFromRight]; 
     [animation setDuration:.50]; 
     [animation setDelegate:self]; 
     [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
     CALayer *layer = [self.myview layer]; 
     [layer addAnimation:animation forKey:nil]; 

     [UIView animateWithDuration:0.5 animations:^{ 
      [greyMask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0]]; 
     } completion:^(BOOL finished) { 
      [greyMask removeFromSuperview]; 
     }]; 
} 

использование:

[vc closeViewWithCompletion:^(BOOL finish) { 
     [navController popViewControllerAnimated:true]; 
    } 
]; 
+0

показать оба кода анимации, которые необходимо выполнить по порядку. – vaibhav

ответ

1

называют свой handler блок в completionBlock после вашего closeView Анимация заканчивается.

- (void)closeViewWithCompletion:(void(^)(BOOL finish))handler { 

    //closeView Animation 
    [UIView animateWithDuration:duration delay:0 options: UIViewAnimationOptionCurveEaseOut animations:^{ 
     //code for close view animation 
    } completion:^(BOOL finished) { 
     handler(YES) //call your handler in completion block 
    }]; 
} 

[vc closeViewWithCompletion:^(BOOL finish) { 
    [self.navigationController popViewControllerAnimated:true]; 
}]; 
Смежные вопросы