Новая модальная презентация iOS 13: представление контроллера не движется вниз - PullRequest
1 голос
/ 08 октября 2019

У меня странное поведение при модальном представлении UIViewControllers в iOS 13. Новый стиль представления, который я видел во всей iOS 13, выглядит следующим образом:

Контроллер представления представлен позади представленногопросмотр контроллера. Он также сдвинут вниз, чтобы имитировать «стек»

The presenting view controller appears behind the presented view controller. It is also shifted down to mimic a

Между тем, когда я представляю контроллеры представления через мое приложение, я продолжаю получать этот эффект:

Представляющий контроллер представления вообще не перемещается при представлении нового контроллера представления

The presenting view controller doesn't move at all when presenting a new view controller

Я использую этот код для представления этого контроллера представления:

let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)

Вот мой вопрос: Мне интересно, почему это происходит, и есть ли способ представить контроллеры представления вобычный стиль iOS 13 (с возвращающимся контроллером представления).

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 11 октября 2019

Я думаю, что проблему можно решить с помощью vc.modalPresentationStyle = .fullScreen, если нет UINavigationController, в противном случае вы можете использовать эти коды следующим образом:

let navigationController = UINavigationController(rootViewController: vc) 
navigationController.modalPresentationStyle = .fullScreen 
present(vc, animated: true)

, поскольку в iOS 13 это новая функция, которую Appleизменил стиль представления по умолчанию View Controllers на модальный лист с полноэкранного в iOS 12

1 голос
/ 19 октября 2019

Оказывается, проблема была в моей иерархии контроллера представления. Мне удалось это исправить, сделав представляющий контроллер представления корневым контроллером представления моего приложения. Сначала я установил контроллер фона в качестве корневого контроллера представления, вызвав

window.rootViewController = self

, а затем, используя мой предыдущий код

let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)

, представил контроллер представления. Спасибо всем, кто пытался помочь!

0 голосов
/ 15 ноября 2019

Мы можем изменить его на Панели инструментов Инспектора. Для этого: перейдите в пятый раздел панели инструментов инспектора, а затем измените значение в поле «Презентация» на «Полный экран».

0 голосов
/ 08 октября 2019

Это должно быть единственное свойство, которое нужно установить

presentedViewController.modalPresentationStyle = .automatic

Подробно в https://developer.apple.com/videos/play/wwdc2019/224/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...