Вы пытались использовать функцию present ()? Примерно так:
let popupVC = PopupViewController()
popupVC.modalPresentationStyle = .overFullScreen
popupVC.modalTransitionStyle = .crossDissolve
self.present(popupVC, animated: true, completion: nil)
Мне проще проектировать контроллеры представлений в их собственных файлах xib, и это позволяет инициализировать, как в моем примере, вместо того, чтобы использовать раскадровку в коде, но это личное предпочтение. Если он все еще не работает, возможно, убедитесь, что ограничения макета для фона всплывающего окна правильные, поэтому он фактически заполняет своего родителя.