Это сработало для меня:
[modalView.superview setBackgroundcolor:[UIColor clearColor]];
Он по-прежнему прозрачно затемняет фоновое изображение, но не покрывает его сплошным серым.
...............................................
ОБНОВЛЕНИЕ ДЛЯ iOS 8
Мое предыдущее решение больше не работает для iOS 8.
Есть много шагов, чтобы заставить что-то подобное работать на iOS 8. Поэтому я создал хорошее решение для многократного использования: ModalController
https://github.com/koreyhinton/ModalController.
Он очень прост в использовании и автоматически отключается.
let modal = ModalController()
modal.content = myCustomView
presentViewController(modal, animated: true, completion: nil)
Если вас интересуют детали реализации, вот как я это сделал:
Заставьте ваш контроллер модального вида занимать весь экран, и фон основного вида будет переключаться между чистым и полутемным. После этого у вас будет представление контента, которое будет модальным и будет центрировано сплошным цветом фона. Я также использую стиль представления: .OverCurrentContext
, который я назначаю в методе init.
var content = UIView()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.clearColor()
content.frame = CGRect(x:0, y:0, width:300, height:300)
content.backgroundColor = UIColor.blackColor()
view.addSubview(content)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.7)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
view.backgroundColor = UIColor.clearColor()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
content!.center = view.center
}