色々調べた結果、アニメーションを維持しつつ透明にするには下記がベストかも。

NextViewController *nextViewController = some view controller;
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
[self presentViewController:nextViewController animated:YES completion:^{
    [nextViewController dismissViewControllerAnimated:NO completion:^{
        rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
        [self presentViewController:nextViewController animated:NO completion:nil];
        rootViewController.modalPresentationStyle = UIModalPresentationFullScreen;
    }];
}];

最初からUIModalPresentationCurrentContextにするとアニメーションが消滅するので、アニメーション付きでpresentModalしてから1回消して再表示する。
あと、UIModalPresentationCurrentContextはrootViewControllerに設定しないと画面表示後に親ビューが真っ白になってしまう。

ちなみに、dismissしちゃってるわけなのでライフサイクルに影響アリ。
やってる処理によっては挙動が変わるかもなので要注意。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*