Наложить вид на весь экран при использовании UITabBarController? - PullRequest
11 голосов
/ 04 октября 2010

Я хочу наложить прозрачную графику в стиле HUD на весь экран в настройке UITabBarController.Кнопка для этого находится на экране первой вкладки (FirstViewController), и наложение также должно покрывать вкладки ... это возможно?

Ответы [ 5 ]

28 голосов
/ 04 октября 2010

Вы можете прикрепить новый вид к окну напрямую.

[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
13 голосов
/ 18 сентября 2013

Приведенное выше решение Хенрик П. Хессель хорошо, но с этим решением есть одна проблема.Эта проблема уже упоминается elsurudo в комментарии под ответом.

Проблема с этим решением заключается в том, что оверлей переворачивается вверх ногами и не вращается.

Я столкнулся с той же проблемой и пробовал разные вещии у меня есть одно решение для устранения этой проблемы.

Решение простое.Вы можете добавить это myNewView в UITabBarController.

[self.tabBarController.view addSubview:myNewView];

Надеюсь, это будет полезно для будущих посетителей.

2 голосов
/ 29 сентября 2017

Вдохновленный ответом rdelmar на другой вопрос , я рекомендую поместить ваш UITabBarController в Контейнер. Просмотреть другие ViewController.Затем добавьте свой hud на ViewController вид.

screenshot for answer

2 голосов
/ 26 ноября 2014
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];

Это может совпадать с [[UIApplication sharedApplication] keyWindow], упомянутым выше.Но мне нравится ссылаться на него через текущее представление.

0 голосов
/ 24 июля 2017

Мне очень понравилось то, что Чейз Роберт написал здесь, поэтому я подумал также предоставить версию Swift 3.:

    if let window = view.window {
        let subView = UIView(frame: window.frame)
        window.addSubview(subView)
    }

Я также добавил условие, чтобы избежать сбоевесли нет окон.

...