Найти вид сверху в iOS

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

UIApplication.sharedApplication.keyWindow.rootViewController.view

Я создаю свою страницу просмотра и добавляю ее как подпредставление в представление rootViewController. Моя проблема в том, что когда я делаю это, если rootViewController изменяется, моя страница загрузки будет идти за представлением нового viewController. Например, я вызываю функцию showLoading при отправке http-запроса. Когда ответ возвращается, он меняет viewController и загрузка идет за ним. Есть ли способ поставить мою загрузку сверху независимо от того, что происходит в фоновом режиме?

1 ответ

Решение

Вам разрешено создавать как можно больше UIWindows как ты хочешь. Если вы действительно хотите, чтобы представление всегда было сверху, то лучше всего создать второе UIWindow и добавь свою иерархию. Тогда независимо от того, что происходит в другом UIWindow Ваш индикатор загрузки останется сверху.

пример

UIWindow *secondWindow = [[UIWindow alloc] initWithFrame:[[[UIApplication sharedApplication] keyWindow] frame]];
[secondWindow setWindowLevel:UIWindowLevelStatusBar];
[secondWindow makeKeyAndVisible];

UIViewController *aNewViewController = [[UIViewController alloc] initWithFrame:secondWindow.bounds];
[secondWindow setRootViewController:aNewViewController];
Другие вопросы по тегам