最近我一直在寻找一种方法来向用户展示正在加载的东西。我确定有iPhone的人之前已经看过这是应用程序,但这样做的最佳方式是什么?
我开始使用UIProgressHUD,但有人向我指出,你不应该真正使用私有(未记录的)API。
然后我移动到了this,这是一个名为MBProgressHUD的自定义版本,但是根据我的经验,当尝试不是从按钮调用它时,它不会显示加载部分,我发现它非常错误(只需单击即可崩溃示例代码并不是很难。)
然后我继续从他的书中James Brannan找到这个,但是我不太清楚为什么他说我过去看了很多应用程序时这是“正确的方法”看起来像UIProgressHUD。
有没有人有任何想法?
由于
答案 0 :(得分:2)
没有一种“最好”的方式。另一种方法是简单地在主视图的子视图上放置UIView
,标记其userInteraction
属性并在需要时将其灰显。您甚至可以添加UIActivityIndicator
作为此“前景”UIView
的子视图,并在需要时启动其动画。加载完成后,隐藏/停止活动指示器并清除前景视图的颜色。
答案 1 :(得分:2)
如果您正在谈论通过网络加载,首先要启用状态栏网络活动指示器:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
请注意,完成后必须将其设置为NO!这应仅用于表示网络活动。
虽然这有点微妙但是有一个进度指示器 IF 是一个好主意,你可以确切知道要花多长时间 - 下载你知道大小并计算传入字节的数量,或上传你也监视传出的字节并知道总大小。
如果您的通话时间非常短或者不知道大小(Web服务调用是一个很好的例子),那么使用UIActivityIndicator进行某种覆盖可能会非常轻松(您也可以使用一组图像添加到UIImage视图中以进行动画处理)。关键是,如果可能的话,它应该阻止用户做其他事情。
此外,如果您有多个事情发生,您可能想要添加描述您所处状态的消息(例如,“调整图像”,“上传图片”等)。