2015-09-02 3 views
3

Мне нужно, чтобы ViewController скользил вверх, центрировался и накладывал текущий ViewController. Я думал, что следующий код будет работать, но это не делает:iOS Swift Popup View Controller

let view = storyboard?.instantiateViewControllerWithIdentifier("castSpell") as! CastSpellViewController 
view.modalPresentationStyle = .OverCurrentContext 
presentViewController(view, animated: true, completion: nil) 

Новый ViewController отображается, но так же, как полноэкранный просмотр. У меня есть размер, установленный на 400x300 в раскадровке. Я знаю, что могу сделать то же самое, имея представление в представлении, а затем показывая вид сверху. Это маршрут, на который мне нужно идти?

+0

Это для iOS 7 или для iOS 8? –

+0

Это iOS 8. Я действительно понял способ сделать это, используя Popover и установив стрелки на 0. –

ответ

0

Вам необходимо установить стиль презентации на презентаторе , а не с изображением.

Использование self.modalPresentationStyle = .OverCurrentContext

+0

Теперь мой код выглядит так, но он все равно делает то же самое: let view = раскадровка. .instantiateViewControllerWithIdentifier ("castSpell ") в виде! CastSpellViewController self.modalPresentationStyle = .OverCurrentContext presentViewController (view, animated: true, completion: noil) –

+0

Вернитесь к исходному коду и добавьте 'self.definesPresentationContext = true' –

+0

К сожалению, это тоже не сработало. –

0
let popOverVC = UIStoryboard(name: "StoryboardName", bundle: nil).instantiateViewControllerWithIdentifier("ViewControllerName") as! PopOverViewContoller 
self.addChildViewController(popOverVC) 
popOverVC.view.frame = self.containerView.frame 
self.containerView.addSubview(popOverVC.view) 
popOverVC.didMoveToParentViewController(self) 

Используйте выше код для добавления ViewController как вид поповер. Вид контейнера не является обязательным. Мне нравится использовать представления контейнеров при фиксированной позиции подзаголовка. Я могу разместить контейнер, используя автозапуск, и держать его скрытым до тех пор, пока это не понадобится.

В этом случае вы можете поместить контейнер/subView в нижней части экрана, откуда вам нужно сдвинуть подзаголовок.

UIView.animateWithDuration(0.5) {() -> Void in 
    //Animate here 
} 

Затем измените рамку контейнера/подпрограммы внутри вышеуказанного блока кода.

Примечание: вид контейнера является обычным UIView. Мне нравится называть его контейнером :)

Смежные вопросы