使用UIModalPresentationStyle.OverCurrentContext在ViewController之上的UITransitionView

时间:2015-05-08 00:32:53

标签: ios swift viewcontroller modalviewcontroller

我试图将视图控制器设置在另一个视图控制器之上,同时保持第一个视图控制器可见。

但是,我看不到第一个,因为我有一个UITransitionView,顶部有一个UIView(第一个在层次结构中,我知道 .OverCurrentContext < / em>正在运作)

这应该是一个非常简单的代码,我不知道发生了什么。我知道我无法触及UITransitionView,这就是为什么我不知道该怎么做。

user

建议将受到高度赞赏。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

有这个回应的派对有点晚了,但我最近遇到了类似的问题。我想要呈现的模态(带有半透明的面纱)被白色的UITransitionView包含,隐藏了底层视图。我怀疑在你发出controller.present()来调用你的模态以在某些情况下(但不知道为什么或何时)时会注入TransitionView注释

作为一种快速而肮脏的解决方法,您可以在出现之前尝试清除模态的父视图的背景。出于某种原因,一旦你出现你的模态,UITransitionView也会得到一个清晰的颜色。

extension UIView {
   //This will eventually get to the UITransitionView and clear the background.
   func clearHierarchyBackground() {
    self.backgroundColor = .clear
    if let superView = self.superview {
        superview.clearHierarchyBackground()
    }
  }
}

let parentController = MyParentViewController()
let childController = MyModalViewController()
childController.modalPresentationStyle = .overFullScreen //.overCurrentContext should also work..
childController.view.clearHierarchyBackground() 
/* The above makes your controller root view .clear
so you need to add subviews with transparency & 
content as you see fit.*/
parentController.present(childController, animated:true....)