我有一个以模态显示的自定义UIViewController。我称之为mainMenu
。
它有自己可爱的小过渡动画,可以让它的视图从屏幕上滑落。当我想解雇它时,我想调用自定义动画,然后在完成后实际解除它。看起来这应该有效:
- (void) dismissCustomViewController {
[mainMenu slideMenuPanelsAway];
[self dismissViewControllerAnimated:YES completion:nil];
}
但是,在我看到自定义幻灯片之前,这会让视图控制器立即消失。
让视图控制器等到菜单消失后才能消失的正确方法是什么?
我尝试了很多东西。我只找到了一种方法让它发挥作用:
- (void) dismissCustomViewController {
[mainMenu slideMenuPanelsAway];
[self performSelector:@selector(dismissController) withObject:nil
afterDelay: 2.0f];
}
(我写了一个名为dismissController
的自定义方法,只是为了让选择器更易于使用,它基本上只是调用[self dismissViewControllerAnimated:YES completion:nil];
。)
使用手动延迟设置而不是实际基于完成动画时,这似乎很糟糕。必须有更好的方法,不存在吗?
答案 0 :(得分:3)
使用animateWithDuration:animations:completion:,并在动画块中执行“slidey stuff”并在完成块中执行解雇。
[UIView animateWithDuration:.5 animations:^{
//Your custom animation stuff here
} completion:^(BOOL finished) {
[self dismissViewControllerAnimated:YES completion:nil];
}];