【发布时间】:2015-04-27 01:29:06
【问题描述】:
所以我试图在我的应用程序中创建一些加载屏幕。我有一个需要 3-10 秒才能加载的视图。在此期间,我想显示一个我制作的 UIView,它只是带有加载屏幕的黑色。目前,我将代码放在超级 viewDidLoad 之后的 viewDidLoad 函数中。这是我的代码
UIView* baseView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
[self.view addSubview:baseView];
[baseView setBackgroundColor:[UIColor blackColor]];
[self.view bringSubviewToFront:baseView];
baseView.layer.zPosition = 1;
这可以正常工作并按照我想要的方式创建我的视图,但是这要等到我的主视图完全加载完成后才会真正显示任何内容。 viewDidLoad 不是放置这个的好地方吗?如果是,我应该把它放在哪里。
简单地说,我有一个非常基本的 UIView,我想在等待实际视图加载时加载它,然后简单地隐藏它。任何想法如何做到这一点?
【问题讨论】:
-
为什么您的视图需要 3-10 秒才能加载?
-
你在哪里运行需要时间的代码?听起来您需要异步调度它
-
该视图需要很长时间才能加载,因为它必须下载大量内容,我正在努力使所有内容异步但是这更多是一个临时修复,因为我将无法使其异步大约一个月。
-
在您可以将加载移动到后台线程之前,您将阻止 UI 更新。你不应该花一个月的时间来做这件事。您需要做的就是在代码周围包裹一个
dispatch_async,并让它在完成后调用一个方法。 -
嗯,它不是那么简单,我有几个函数会导致加载非常复杂。它不像将它包装在 dispatch_async 中那么简单,除此之外,我还有其他需要首先完成的事情,因此需要临时修复。这也将作为一个很好的加载器,即使在普通视图上延迟 300 毫秒-1 秒。
标签: ios objective-c xcode uiview xib