0

我想创建一个加载视图页面以放在屏幕中所有视图的顶部。我使用以下代码来获取 rootViewController 的视图:

UIApplication.sharedApplication.keyWindow.rootViewController.view

我创建了我的视图页面并将其作为子视图添加到 rootViewController 的视图中。我的问题是当我这样做时,如果 rootViewController 发生变化,我的加载页面将落后于新的 viewController 的视图。例如,我在发送 http 请求时调用了 showLoading 函数。当响应返回时,它会更改 viewController 并在其后面加载。有没有办法让我的加载独立于后台发生的事情?

4

1 回答 1

3

您可以根据需要创建任意数量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];
于 2013-03-19T20:23:37.413 回答