Контроллер модального вида Swift с прозрачным фоном [дубликат]

этот вопрос уже есть ответ здесь:

Я знаю, что эта тема довольно популярна, но я немного iniciate проблема в языке программирования, дело в том, что я до сих пор не понимаю, куда я положил код. Ну, я расскажу все дело:

enter image description here

Я пытаюсь сделать модальный Swift немного отличным от обычного: нажав на кнопку, на экране отображается ViewController (следующий модальный тип), но с прозрачным фоном. Будет отображаться только синий вид с меткой. Когда этот ViewController представлен, он имеет прозрачный фон, но как только он завершит переход, он останется с черным фоном. Уже выключены непрозрачный вариант, и протестированы некоторые варианты, но ничего это устранение неполадок.

некоторые могут мне помочь?

видео-тест на тренажере по делу (https://www.youtube.com/watch?v=wT8Uwmq9yqY).

Я начинаю с swift, и я все еще довольно потерян с тем, как программировать в 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
    }
}

если вы работаете с раскадровки:

просто добавьте раскадровку Segue с Kind значение Present Modally для вашего модального контроллера вида и на этом контроллере вида установите следующие значения:

  • Фон = Ясно Цвет
  • Drawing = снимите флажок непрозрачный
  • Презентация = В Текущем Контексте

As Crashalot указал в своем комментарии: убедитесь, что segue использует только Default как Presentation и Transition. Используя Current Context на Presentation делает модал почернеет, не оставаясь прозрачным.