我有2个视图控制器,VCA
和VCB
。我使用VCA
从VCB
过渡到presentViewController(VCB, animated: true, completion: nil)
,然后在dismissViewControllerAnimated(true, completion: nil)
中使用VCB
返回。此转换由自定义TransitionManager
实例管理,VCA
和VCB
实例都有TransitionManager
个transitioningDelegate
实例。
我希望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
。
答案 0 :(得分:1)
Apple文档说明要更改转换类型,必须在显示视图控制器之前设置此属性。