2015-05-08 8 views
0

Я пытаюсь установить контроллер представления поверх другого, сохраняя некоторые из первых на видимом.UITransitionView поверх ViewController с использованием UIModalPresentationStyle.OverCurrentContext

Однако, я не могу видеть, первый, потому что у меня есть UITransitionView с UIView поверх него (первый находится в иерархии, и это, как я знаю, .OverCurrentContext работает)

Это должен быть очень простой код, и я не уверен, что происходит. Я знаю, что не могу прикоснуться к UITransitionView, и поэтому я не уверен, что делать.

let vc = storyBoard.instantiateInitialViewController() as MyPresenterViewController 
vc.view.backgroundColor = .clearColor() 
vc.modalPresentationStyle = .OverCurrentContext 

viewControllerToPresentIn.presentViewController(vc, animated: true, completion: nil) 

Предложения были бы высоко оценены.

С наилучшими пожеланиями,

+0

Вам нужно объяснить, что вы делаете с UITransitionView. Как он добавляется? – rdelmar

+0

@rdelmar Я ничего не делаю, поэтому я не уверен, почему это происходит. Не должно было возникнуть простое настоящее VC? – Tialtous

+0

Я не знаю, почему это произойдет. Когда я это делаю (заменяя viewControllerToPresentIn на себя), он отлично работает. Что такое viewControllerToPresentIn? – rdelmar

ответ

0

Немного опоздал на вечеринку с этим ответом, но в последнее время я была в подобной проблеме. Модальный, который я хотел представить (с полупрозрачной завесой), содержался в белом UITransitionView, скрывая основные представления. Я подозреваю, что этот TransitionView вводится, когда вы выдаете звонок controller.present(), чтобы показать свои модальные данные в некоторых случаях (но не знаете, почему и когда)

В качестве быстрого и грязного обходного пути вы можете попытаться очистить фон родителя взгляды на ваш модальность перед тем, как вы представляете. По какой-то причине 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....)