gpt4 book ai didi

ios - 带有进度条的 UIWebView

转载 作者:IT王子 更新时间:2023-10-29 07:59:57 25 4
gpt4 key购买 nike

大家好,我是编程新手,我正在尝试在 Xcode 上制作我的第一个 iPhone 应用程序。我的应用程序包含一个按钮,按下该按钮会打开 UIWebView 并加载主页。现在我也想像 Safari 一样在 WebView 中添加一个 ProgressView,它表示加载页面的进度。我该怎么做?
到目前为止,我在 UIWebView 中加载 URL 的代码:

.h

IBOutlet UIWebView *webView;

.m

- (void)viewDidLoad
{
[webView loadRequest:[NSURLRequest requestWithURL: [NSURL URLWithString:@"http:/www.google.com/"]]];

感谢您的帮助!

最佳答案

要获得准确的 UIProgressView,您需要执行以下任务:

  • 您可以在信息不完整时获取信息
  • 根据该信息将其“完整性”量化为百分比。

现在,当您加载 UIWebView 时,这是不可能的。苹果也不这样做。 Apple 经常使用伪造的 UIProgressView 来让您在页面加载时看到一些东西。 Mail 还使用伪造的进度 View 。自己去试试吧。这就是 Apple 的虚假进度 View 的工作原理:

  • 进度 View 开始以缓慢、恒定的速度移动
  • 如果任务在进度条完成之前完成,它会突然将剩余进度压缩到 100%,然后消失
  • 如果任务需要很长时间,进度 View 将在 95% 处停止并停留在那里直到任务完成。

为此,您必须手动为 progressView 设置动画。您可以将它子类化,但这对您来说可能有点高级。最简单的方法是这样的:

在 myViewController.h 中

@interface myViewController : UIViewController {
BOOL theBool;
//IBOutlet means you can place the progressView in Interface Builder and connect it to your code
IBOutlet UIProgressView* myProgressView;
NSTimer *myTimer;
}
@end

在 myViewController.m 中

#import "myViewController.h"
@implementation myViewController
- (void)webViewDidStartLoad:(UIWebView *)webView{
myProgressView.progress = 0;
theBool = false;
//0.01667 is roughly 1/60, so it will update at 60 FPS
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.01667 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
theBool = true;
}
-(void)timerCallback {
if (theBool) {
if (myProgressView.progress >= 1) {
myProgressView.hidden = true;
[myTimer invalidate];
}
else {
myProgressView.progress += 0.1;
}
}
else {
myProgressView.progress += 0.05;
if (myProgressView.progress >= 0.95) {
myProgressView.progress = 0.95;
}
}
}
@end

然后,在您的任务完成的地方,设置 theBool = true;,进度 View 将自行处理。更改 if 语句中的值以控制动画的速度。

关于ios - 带有进度条的 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com