当url地址中包含有中文字符或其余非标准的url字符时,须要对该url地址进行编码。NSString提供编码和解码方法:html
编码:stringByAddingPercentEscapesUsingEncodingweb
NSString *urlString=[NSString stringWithFormat:@"http://www.xxxx.com/?param=%@",@"中文"]; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
解码:stringByReplacingPercentEscapesUsingEncoding编码
NSString *urlStr = [@"xxx" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
1.- (void)loadRequest:(NSURLRequest *)request;lua
NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:request];
直接加载url地址。url
2.- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;spa
若是获取到的是HTML字符串,能够用这个方法加载。代理
3.- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;code
NSURL *url = [NSURL URLWithString:urlString]; NSData *data=[NSData dataWithContentsOfURL:url]; [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"GBK" baseURL:nil];
编码格式有GB23十二、GBK、UTF-8等许多种,当url地址的编码格式比较特殊时,能够用这个方法加载。orm
1.实现下面的事件方法能使WebView大小高度自适应:htm
遵照协议UIWebViewDelegate,设置代理self.webView.delegate=self;
实现- (void)webViewDidFinishLoad:(UIWebView *)webView事件方法
- (void)webViewDidFinishLoad:(UIWebView *)webView //网页加载完成的时候调用 { CGRect frame = webView.frame; CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; frame.size = fittingSize; webView.frame = frame; }
此方法获得的webView自适应的高度是固定的,若是显示的HTML的高度超过webView的高度,则以屏幕滚动的方式显示。
2.若是想让webView的高度等于显示的HTML的实际高度,即显示的HTML有多高,webVIew的高度就有多高,则使用如下方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView { NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] integerValue]; self.webView.frame=CGRectMake(0, 0, self.view.frame.size.width,height); }
stringByEvaluatingJavaScriptFromString能够实现UIWebView与JavaScript之间的交互,很方便的操做UIWebview中的页面元素。
虽然这个方法能使webView高度为显示的HTML实际高度,但效果并非太好,当高度超出屏幕时,没法滚动下拉。
3.若要在webVIew的高度为实际HTML的高度的状况下实现滚动,可综合两种方法,将webView放置于一个合适大小的scrollView上,便可实现:
- (void)webViewDidFinishLoad:(UIWebView *)webView { CGRect frame = webView.frame; CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; frame.size = fittingSize; webView.frame = frame; NSInteger height = [[webView stringByEvaluatingJavaScriptFromString: @"document.body.scrollHeight"] integerValue]; self.scrollView.contentSize=CGSizeMake(self.view.frame.size.width, height); [self.scrollView addSubview:self.webView]; }
另,如下三段代码效果基本相同:
[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"];
[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"];
[webView stringByEvaluatingJavaScriptFromString:@"document.body.clientHeight"];