UIModalPresentationFormSheet с прозрачным фоном? - PullRequest
4 голосов
/ 12 января 2012

По сути, я хочу, чтобы лист модальной формы был прозрачным, чтобы я мог видеть UIView за ним (это полноэкранный режим).

Возможно ли это?Установка UIView на непрозрачный и backgroundColor из [UIColor clearColor] не работает.

Я заметил, когда я переключаюсь с UIModalPresentationFormSheet на другой стиль презентации, фон моего представления действительно прозрачный.

Где я ошибся?

Ответы [ 2 ]

4 голосов
/ 07 января 2014

Это сработало для меня:

[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
}
2 голосов
/ 23 января 2012

Насколько я могу судить, это больше невозможно.Раньше это было, но Apple отключила эту функцию.

Вместо этого я просто создал свои UIView как обычные и добавил их в качестве подпредставлений в мой основной вид.Я должен закрыть свой бланк и затем сделать эту презентацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...