2015-10-13 6 views
68

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

enter image description here

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

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

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

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

self.presentingViewController.providesPresentationContextTransitionStyle = YES; 
self.presentingViewController.definesPresentationContext = YES; 
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext; 

Где Я положил этот код?

+0

См. Следующее: http://stackoverflow.com/questions/27669699/transparent-background-for-modally-presented-viewcontroller – joern

+0

Должен ли я держать сегмент между кнопкой и ViewController (модальным)? , потому что без следования ничего не представляет, со следующими черными черными чертами. –

+0

http://stackoverflow.com/questions/26598099/present-uiviewcontroller-as-a-modal-with-transparent-background?rq=1 –

ответ

172

Вы можете сделать это следующим образом:

В вашем главном контроллере представления:

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 к вашему модальный контроллер представления и на этот вид контроллера установите следующие значения:

  • фона = Clear Color
  • Drawing = Снять отметку непрозрачной флажок
  • Презентация = Over Current Context

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

+0

Работаете ли вы с раскадровки? См. Мой отредактированный ответ.Я просто попробовал, и он работает – joern

+0

После того, как вы отредактируете, следуйте его инструкциям, и он работает правильно. Спасибо огромное! –

+0

Нет проблем, рад, что это помогло :-) – joern

 Смежные вопросы

  • Нет связанных вопросов^_^