Swift Modal View Controller с прозрачным фоном
Я знаю, что эта тема довольно популярна, но я немного обеспокоен проблемой на языке программирования, факт в том, что я до сих пор не понимаю, куда я помещаю код. Хорошо, я расскажу весь случай:
![введите описание изображения здесь]()
Я пытаюсь сделать модальный Swift немного отличным от обычного. Нажав на кнопку, ViewController отображается (после модального типа) на экране, но с прозрачным фоном. Отобразится только синий вид с меткой. Когда этот ViewController представлен, он имеет прозрачный фон, но как только он завершит переход, он останется на черном фоне. Уже деактивирован непрозрачный вариант и протестированы некоторые параметры, но ничего не найдено.
Кто-нибудь может мне помочь?
Видео - это тест в симуляторе на корпусе (https://www.youtube.com/watch?v=wT8Uwmq9yqY).
Я начинаю с быстрых, и я все еще довольно потерял, как программировать в Xcode, я прочитал ответ на вопрос, который имеет следующий код для решения этой проблемы:
self.presentingViewController.providesPresentationContextTransitionStyle = YES;
self.presentingViewController.definesPresentationContext = YES;
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;
Где я могу поместить этот код?
Ответы
Ответ 1
Вы можете сделать это следующим образом:
В главном контроллере представления:
func showModal() {
let modalViewController = ModalViewController()
modalViewController.modalPresentationStyle = .overCurrentContext
presentViewController(modalViewController, animated: true, completion: nil)
}
В вашем модульном контроллере просмотра:
class ModalViewController: UIViewController {
override func viewDidLoad() {
view.backgroundColor = UIColor.clearColor()
view.opaque = false
}
}
Если вы работаете с раскадровкой:
Просто добавьте Storyboard Segue с Kind
, установленным в Present Modally
, в ваш контроллер модального просмотра, и на этом контроллере представления установите следующие значения:
- Фон = Очистить цвет
- Рисование = Снимите флажок "Непрозрачный"
- Презентация = текущий контекст
Как Crashalot указал в своем комментарии: убедитесь, что segue использует только Default
для Presentation
и Transition
. Использование Current Context
для Presentation
делает модальный поворот черным, а не прозрачным.