Всплывающее окно имеет черный фон, хотя оно настроено на очистку - PullRequest
0 голосов
/ 18 сентября 2018

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

Проблема в том, что цвет фона черный, и я не вижу вид ниже, даже если все цвета фона установлены на прозрачный.Я даже попытался установить четкие фоны при представлении контроллера и до сих пор ничего.Я установил в Storyboard, чтобы показать текущий контекст и перекрестное растворение.

Отладчик представления также не показывает ни одно из представлений как чёрное в иерархии.Не уверен, что не так, любая помощь приветствуется, спасибо!

let vc = UIStoryboard.init(name: "AccountSettings", bundle: nil).instantiateViewController(withIdentifier: "upgradeVCPopup") as! UpgradeVCPopup
let nav = UINavigationController(rootViewController: vc)
nav.view.backgroundColor = .clear
vc.view.backgroundColor = .clear
if let navigationController = self.navigationController {
    navigationController.present(nav, animated: true, completion: nil)
} else {
    self.present(nav, animated: true, completion: nil)
}

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы пытались установить nav.view.backgroundColor = .white Устанавливая nav.view.backgroundColor = .clear, вы устанавливаете фон окна навигации, чтобы очистить (основание окна Nav по умолчанию черное)

0 голосов
/ 18 сентября 2018

Причина, по которой у вас черный фон, заключается в том, что вы не установили UIViewController s UIModalPresentationStyle.Этот параметр определяет, как отображается ваш модальный контроллер.Значение по умолчанию для контроллеров модального вида - fullScreen.

С Документация Apple :

UIModalPresentationStyle.fullScreen

Представления, принадлежащие текущему контроллеру представления, удаленыпосле окончания презентации.

Это означает, что после представления контроллера представления предыдущий контроллер представления удаляется.И когда он удален, так как под ним ничего нет, вы видите черный цвет.Если вы хотите, чтобы предыдущий контроллер просмотра оставался и был видимым, вы можете установить modalPresentationStyle на overFullScreen.

С Документация Apple :

UIModalPresentationStyle.overFullScreen

Представления под представленным содержимым не удаляются из иерархии представлений по окончании презентации.Поэтому, если представленный контроллер представления не заполняет экран непрозрачным содержимым, основное содержимое просвечивает.

Чтобы сделать это, добавьте следующую строку перед представлением вашего контроллера представления:

vc.modalPresentationStyle = .overFullScreen

Это должно помочь.

...