cdu*_*dub 16 uiwebview uiactivityindicatorview ios ios7
我有一个viewDidLoad,它创建一个Web视图并启动一个活动指示器.如何仅在网页出现时停止活动指示器?如何在"加载"等活动指标中添加单词?
// Create the UIWebView
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];
// Start the throbber to check if the user exists
UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityView.center = CGPointMake([self screenWidth] / 2.0, 370.0);
[activityView startAnimating];
activityView.tag = 100;
[self.view addSubview:activityView];
NSString* url = @"http://google.com";
NSURL* nsUrl = [NSURL URLWithString:url];
NSURLRequest* request = [NSURLRequest requestWithURL:nsUrl cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30];
// Remove activity view
UIView *viewToRemove = [self.view viewWithTag:100];
//[viewToRemove removeFromSuperview];
[webView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)
inc*_*iko 34
加载视图:
@implementation yourViewController{;
UIView* loadingView;
}
Run Code Online (Sandbox Code Playgroud)
在你的viewDidLoad:
loadingView = [[UIView alloc]initWithFrame:CGRectMake(100, 400, 80, 80)];
loadingView.backgroundColor = [UIColor colorWithWhite:0. alpha:0.6];
loadingView.layer.cornerRadius = 5;
UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.center = CGPointMake(loadingView.frame.size.width / 2.0, 35);
[activityView startAnimating];
activityView.tag = 100;
[loadingView addSubview:activityView];
UILabel* lblLoading = [[UILabel alloc]initWithFrame:CGRectMake(0, 48, 80, 30)];
lblLoading.text = @"Loading...";
lblLoading.textColor = [UIColor whiteColor];
lblLoading.font = [UIFont fontWithName:lblLoading.font.fontName size:15];
lblLoading.textAlignment = NSTextAlignmentCenter;
[loadingView addSubview:lblLoading];
[self.view addSubview:loadingView];
Run Code Online (Sandbox Code Playgroud)
此视图将如下所示:

要小心,如果你想使用cornerRadius,你必须在导入<QuartzCore/QuartzCore.h>之前导入框架和corse,将QuartzCore框架添加到你的项目中!
检测webview停止加载时:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[loadingView setHidden:YES];
}
Run Code Online (Sandbox Code Playgroud)
你必须实现UIWebViewDelegate协议,和
webView.delegate = self;
Run Code Online (Sandbox Code Playgroud)
并使其可见:
- (void)webViewDidStartLoad:(UIWebView *)webView {
[loadingView setHidden:NO];
}
Run Code Online (Sandbox Code Playgroud)
Lor*_*rik 32
如何仅在网页出现时停止活动指示器?
你的目标可以成为delegate对webView听-webViewDidFinishLoad委托方法.所以:
- (void)viewDidLoad {
// Create the UIWebView
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.delegate = self; // Here is the key
...
}
...
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self.view viewWithTag:100].hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
您还可以实现-webViewDidStartLoad:显示活动指示器而不是在-viewDidLoad方法中显示它.
如何在"加载"等活动指标中添加单词?
你应该创建一个单独的UILabel,没有办法将文本添加到标准UIActivityIndicatorView
如果你在Swift上寻找这个,这里是:
var boxView = UIView()
func webViewDidStartLoad(webView_Pages: UIWebView) {
// Box config:
boxView = UIView(frame: CGRect(x: 115, y: 110, width: 80, height: 80))
boxView.backgroundColor = UIColor.blackColor()
boxView.alpha = 0.9
boxView.layer.cornerRadius = 10
// Spin config:
let activityView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
activityView.frame = CGRect(x: 20, y: 12, width: 40, height: 40)
activityView.startAnimating()
// Text config:
let textLabel = UILabel(frame: CGRect(x: 0, y: 50, width: 80, height: 30))
textLabel.textColor = UIColor.whiteColor()
textLabel.textAlignment = .Center
textLabel.font = UIFont(name: textLabel.font.fontName, size: 13)
textLabel.text = "Loading..."
// Activate:
boxView.addSubview(activityView)
boxView.addSubview(textLabel)
view.addSubview(boxView)
}
func webViewDidFinishLoad(webView_Pages: UIWebView) {
// Removes it:
boxView.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)
别忘了调用UIWebViewDelegate:
class ViewController: UIViewController, UIWebViewDelegate {
Run Code Online (Sandbox Code Playgroud)
并在viewDidLoad上设置webView的委托:
webView.delegate = self
Run Code Online (Sandbox Code Playgroud)