我正在开发一个应用程序,我在UIWebView中加载urlrequest,它发生成功.
但是现在我正在尝试在加载过程中显示UIProgressView(从0.0开始到1.0),随着加载的进度动态地改变.
我怎样才能做到这一点?
UIWebView在正常模式下不会提供任何进度信息.您需要做的是首先使用NSURLConnection异步获取数据.当NSURLConnection委托方法时connection:didReceiveResponse
,您将获取您获得的数字expectedContentLength
并将其用作最大值.然后,在委托方法中connection:didReceiveData
,您将使用length
NSData实例的属性来告诉您离您有多远,因此您的进度分数将被length / maxLength
归一化到0.0到1.0之间.
最后,您将使用数据而不是URL(在您的connection:didFinishLoading
委托方法中)初始化webview .
两个警告:
expectedContentLength
NSURLResponse 的属性可能是-1(NSURLReponseUnknownLength
常量).在这种情况下,我建议抛出一个你关闭的标准UIActivityIndicator connection:didFinishLoading
.
确保每次从NSURLConnection委托方法之一操作可见控件时,都可以通过调用来执行此操作performSelectorOnMainThread:
- 否则您将开始获得可怕的EXC_BAD_ACCESS错误.
使用这种技术,当你知道你应该获得多少数据时,你可以显示一个进度条,当你不知道时,你可以显示一个微调器.