在我的应用程序中,我注意到它会在运行的前几秒钟运行缓慢,因为对象仍在初始化、绘制到屏幕上等。如何加载这些对象并创建一个条形图来显示加载进度?
您可以显示加载屏幕。您可以使用不同的线程和分离线程。或者,您可以使用UIActivityIndicatorView
或UIProgressBar
来显示当前正在加载。
UIActivityIndicatorView
基本上就像启动Mac一样。一个旋转的圆圈。 UIProgressBar
是一个空条,随着加载的增加,它充满了蓝色。
UIProgressBar
有一个名为 progress
的变量,而您只是向UIActivityIndicator
发送startAnimating
和stopAnimating
消息
要了解有关这两个的更多信息,请查看以下链接:
进度条 苹果文档
进度条图像
活动指示器苹果文档
活动指示器 GIF 图像
更新您对其他答案的问题:
你加载是为了什么?您要为其加载的类/对象是否有委托方法?如果你说
仍在初始化并绘制到屏幕上
考虑以下object
是您的对象之一你可以说
if (object) {
// saying just 'object' asks if it is non-zero/valid
}
还要检查是否绘制到屏幕上,请尝试:
if([self.view.subviews containsObject:object])
或
if([object superview] == self.view)
或方法
-(BOOL)isDescendantOfView:(UIView *)view;
如果接收方是视图的直接或远视图,或者视图是接收器本身,则返回值YES
;否则NO
。
另外:当我说self.view
时,它不必是self
,因为加载视图可能是不同的视图。您可以为该其他类创建一个对象并调用该类而不是self
。喜欢:if([otherClass.object superview] == otherClass.view)
你也可以在另一个类中创建一个update
方法,这样你就可以说:
if([otherClass finishedLoading])
然后将其作为update
方法:
- (BOOL)finishedLoading {
return ([object superview] == self.view)
}
这是很多东西要吸收!还有其他问题吗?
如何加载这些对象" - 根据您的需要,可以有多种方式-
您可以使用并发线程来加载事物。
你可以进行延迟加载 - 首先加载那些需要在第一个屏幕上显示的东西(考虑到你正在加载几个在第一个屏幕上不需要的数据(。
您可以显示加载屏幕,并让用户知道正在加载。
您可以使用UIActivityIndicator
或UIProgressBar
来显示当前正在加载。