为什么不能在转换期间设置modalPresentationStyle?

时间:2016-03-29 14:55:04

标签: ios

我有2个视图控制器,VCAVCB。我使用VCAVCB过渡到presentViewController(VCB, animated: true, completion: nil),然后在dismissViewControllerAnimated(true, completion: nil)中使用VCB返回。此转换由自定义TransitionManager实例管理,VCAVCB实例都有TransitionManagertransitioningDelegate实例。

我希望VCB显示在VCA的顶部,所以在VCB的初始化中我添加:

convenience init() {
    self.init()
    modalPresentationStyle = .OverFullScreen
}

这很有效。

但是,如果我从modalPresentationStyle = .OverFullScreen的初始化工具中移除VCB,并尝试将其设置在TransitionManager代理中的UIViewControllerAnimatedTransitioning类中,如下所示

func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
    let transitionContext: UIViewControllerContextTransitioning!
    let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
    toVC.modalPresentationStyle = .OverFullScreen

    // do animation ...
}

效果不起作用。为什么会这样呢?

修改

似乎modalPresentationStyle.rawValue.FullScreen VCB中为0(viewDidLoad),然后在{{OverFullScreen中为{VCB} 1}} viewDidAppear

1 个答案:

答案 0 :(得分:1)

Apple文档说明要更改转换类型,必须在显示视图控制器之前设置此属性。