當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"];