У меня очень простой проект с контроллером представления, встроенным в контроллер навигации.Я хочу выдвинуть новый контроллер представления с прозрачностью, которая позволяет деталям нижележащего контроллера просвечивать.
Во время push-перехода деталибазового контроллера действительно отображается через новый контроллер, который выдвигается, но когда переход завершается, базовое представление контроллера удаляется из иерархии представлений, и прозрачная часть нового контроллера отображается черным цветом.
Согласно Apple ,
При представлении контроллера представления с использованием стиля UIModalPresentationFullScreen UIKit обычно удаляет представлениябазовый контроллер представления после завершения анимации перехода.Вы можете предотвратить удаление этих представлений, указав вместо этого стиль UIModalPresentationOverFullScreen.Вы можете использовать этот стиль, когда представленный контроллер представления имеет прозрачные области, через которые просвечивает основное содержимое.
Я определяю modalPresentationStyle представленного (выдвинутого) контроллера представления как UIModalPresentationOverFullScreen во время действия кнопкиэто инициализирует push:
let semiController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SemiViewController")
semiController.modalPresentationStyle = .overFullScreen
self.navigationController?.pushViewController(semiController, animated: true)
Я не думаю, что мне нужно указывать пользовательский переход, чтобы это работало.Так что же дает?
Спасибо.