Я хочу наложить прозрачную графику в стиле HUD на весь экран в настройке UITabBarController. Кнопка для этого находится на первом экране вкладки (FirstViewController), и наложение также должно охватывать вкладки... возможно ли это?
Наложение представления на весь экран при использовании UITabBarController?
Ответ 1
Вы можете напрямую прикрепить свой новый вид к своему окну.
[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
Ответ 2
Вышеупомянутое решение Хенрик П. Хессель является хорошим, но есть одна проблема с этим решением. Проблема уже упоминалась в elsurudo в комментарии ниже ответа.
Проблема с этим решением заключается в том, что наложение появляется вверх и вниз, и не вращается.
У меня возникла та же проблема, и я пробовал разные вещи, и у меня есть одно решение для устранения этой проблемы.
Решение прост. Вы можете добавить это представление myNewView
в UITabBarController
.
[self.tabBarController.view addSubview:myNewView];
Надеюсь, это будет полезно для будущих посетителей.
Ответ 3
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];
Это может быть то же самое, что и упомянутый выше [[UIApplication sharedApplication] keyWindow]
. Но мне нравится ссылаться на него в текущем виде.
Ответ 4
Вдохновленный rdelmar ответит на другой вопрос, я рекомендую поместить ваш UITabBarController в Container View другой ViewController
. Затем добавьте ваше hud на ViewController
.
Ответ 5
Мне очень понравилось то, что написал здесь Чейз Роберт, поэтому я подумал также предоставить версию Swift 3.
if let window = view.window {
let subView = UIView(frame: window.frame)
window.addSubview(subView)
}
Я также добавил условие, так что вы не получите сбоя, если нет окон.