自定义 Segue 动画显示黑屏

Posted

技术标签:

【中文标题】自定义 Segue 动画显示黑屏【英文标题】:Custom Segue Animation showing black screen 【发布时间】:2014-05-27 13:00:27 【问题描述】:

我遇到了一个新问题,在使用自定义 segue 呈现 destinationViewController 时,在转换期间源 ViewController 更改为黑屏,我需要屏幕保持原样(我的设计)。

UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController][screenshot][1]

CATransition* transition = [CATransition animation];
transition.duration = 0.1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromRight; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom


[destinationController.view.layer addAnimation:transition forKey:kCATransition];
[sourceViewController presentViewController:destinationController animated:NO completion:nil];

【问题讨论】:

【参考方案1】:

我认为你需要保留上下文,试试这个:

    UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
    rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
    UIViewController *destinationController = (UIViewController*)[self destinationViewController]
    [sourceViewController presentViewController:destinationController animated:NO completion:nil];

【讨论】:

嗨,我在做反向操作时很震惊。我想用我上面讨论过的相同动画从第二个屏幕返回第一个屏幕,但是“第一个屏幕立即出现,然后第一个屏幕的动画慢慢出现并重叠”。我只想在第二个屏幕上为第一个屏幕制作动画 你是怎么做到的? 如何快速做到这一点?

以上是关于自定义 Segue 动画显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章

如何实现自定义segue动画?

全屏自定义主题

自定义推送 segue 动画

使用情节提要逆转自定义 Segue

对于自定义 segue 动画,如何告诉 ViewController 它是动画的?

自定义 segue 和导航控制器动画故障