Моя проблема заключается в том, что у меня есть 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];
}
];
показать оба кода анимации, которые необходимо выполнить по порядку. – vaibhav