向用户展示加载iPhone的最佳方式是什么?

时间:2009-10-05 11:24:34

标签: iphone objective-c loading uiprogressview

最近我一直在寻找一种方法来向用户展示正在加载的东西。我确定有iPhone的人之前已经看过这是应用程序,但这样做的最佳方式是什么?

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

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

然后我继续从他的书中James Brannan找到这个,但是我不太清楚为什么他说我过去看了很多应用程序时这是“正确的方法”看起来像UIProgressHUD。

有没有人有任何想法?

编辑:This is pretty good...

由于

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

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

虽然这有点微妙但是有一个进度指示器 IF 是一个好主意,你可以确切知道要花多长时间 - 下载你知道大小并计算传入字节的数量,或上传你也监视传出的字节并知道总大小。

如果您的通话时间非常短或者不知道大小(Web服务调用是一个很好的例子),那么使用UIActivityIndi​​cator进行某种覆盖可能会非常轻松(您也可以使用一组图像添加到UIImage视图中以进行动画处理)。关键是,如果可能的话,它应该阻止用户做其他事情。

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