Как представить всплывающее окно на весь экран - PullRequest
0 голосов
/ 03 октября 2019

У меня есть следующая конфигурация вида

Панель вкладок -> Контроллер Nav -> Вид: Нажмите на кнопку -> перейти к-> Другой вид: Нажмите на кнопку -> Всплывающий вид.

Этот модальный вид находится на другой раскадровке.

Я хочу представить эту модель в полноэкранном режиме. Я пробовал это решение, упомянутое на Представление модального в iOS 13 в полноэкранном режиме , но оно не работает. Я также пробовал несколько других решений, но всплывающее окно не отображается на весь экран, строка состояния видна вверху.

Как представить модальный вид в полноэкранном режиме?

let storyboard = UIStoryboard(name: "Other", bundle: Bundle.main)

guard let popupVC = storyboard.instantiateViewController(withIdentifier: "PopUpViewController") as? PopUpViewController else {
   print("PopUpViewController not found")
   return
}

popupVC.modalPresentationStyle = .fullScreen

self.present(popupVC, animated: true, completion: nil)

Ответы [ 2 ]

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

Вы можете попробовать представить с помощью контроллера навигации.

let storyboard = UIStoryboard(name: "Other", bundle: Bundle.main)

guard let popupVC = storyboard.instantiateViewController(withIdentifier: "PopUpViewController") as? PopUpViewController else {
   print("PopUpViewController not found")
   return
}

var navigationController = UINavigationController(rootViewController: popupVC)
navigationController.modalPresentationStyle = .fullScreen
self.present(navigationViewController, animated: true, completion: nil)

Альтернативой может быть использование presentViewController, но presentViewController будет представлять только один viewController модально поверх текущего видимого viewController, тогда какпредставление с navigationController даст гибкость, позволяющую продвигать другие компоненты сверху, обеспечивая более плавную навигацию и переход к предыдущей странице.

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

Возможно, попробуйте создать контроллер представления следующим образом:

    let popOverVC = UIStoryboard(name: "yourBoard", bundle: nil).instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
    self.addChild(popOverVC)
    let lSs = UIScreen.main.bounds
    popOverVC.view.frame = CGRect(x: 0, y: 0, width: lSs.width, height: lSs.height)
    popOverVC.view.tag = tag
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParent: self)

В классе контроллера всплывающего представления добавьте метод для анимации его представления в viewDidLoad.

Редактировать: я читаю ваши ответы. Возникшая проблема связана с неправильной обработкой строки состояния. Вместо того, чтобы пытаться сделать этот veiewcontroller полноэкранным, просто скрыть строку состояния Как скрыть строку состояния в приложении Swift для iOS? и вернуть ее, когда вы захотите снова ее увидеть.

...