1

最近我一直在寻找一种方式来向用户展示正在加载的东西。我敢肯定任何拥有 iPhone 的人以前都看过这是应用程序,但最好的方法是什么?

我开始使用UIProgressHUD,但是有人向我指出您不应该真正使用私有(未记录的)API。

然后我转向了这个,这是一个名为 MBProgressHUD 的自定义版本,但是根据我的经验,当尝试不是从按钮调用它时,它不会显示加载部分,我发现它非常有问题(这不是很难只需单击即可使示例代码崩溃)。

然后我继续从他的书中找到James Brannan的这个,但是当我过去看到许多应用程序看起来像 UIProgressHUD 时,我不太确定为什么他声称这是这样做的“正确方式” .

有没有人有任何想法?

编辑:这很好......

谢谢

4

2 回答 2

2

没有一种“最好”的方式。另一种方法是简单地UIView在主视图的子视图顶部放置一个,标记其userInteraction属性并在需要时将其变灰。你甚至可以添加一个UIActivityIndicator作为这个“前景”的子视图,UIView在需要时启动它的动画。加载完成后,隐藏/停止活动指示器并清除前景视图的颜色。

于 2009-10-05T12:16:38.930 回答
2

如果您正在谈论通过网络加载,那么首先要启用状态栏网络活动指示器:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

请注意,完成后必须将其设置为 NO!这应该只用于指示网络活动。

不过这有点微妙,如果你能准确地知道某件事需要多长时间,那么有一些进度指示器是个好主意——下载你知道大小并计算传入字节数的地方,或者上传你还监控传出字节数的地方和知道总大小。

如果您的调用长度非常小或大小不知道(Web 服务调用就是一个很好的例子),那么带有 UIActivityIndi​​cator 的某种覆盖可以非常轻松(您也可以使用添加一组图像的自定义变体一个 UIImage 视图动画)。关键是,如果可能的话,它不应该阻止用户做其他事情。

此外,如果您有很多事情要做,您可能需要添加描述您所处状态的消息(例如,“调整图像”、“上传图像”等)。

于 2009-10-06T05:14:19.647 回答