Подтвердить что ты не робот

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;

Где я могу поместить этот код?

4b9b3361

Ответ 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 делает модальный поворот черным, а не прозрачным.