欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios获取body标签的高度

程序员文章站 2022-04-12 21:17:48
ios获取body标签的高度。 Url编码、解码 当url地址中包含有中文字符或其他非标准的url字符时,需要对该url地址进行编码。NSString提供编码和解码方法: 编...

ios获取body标签的高度。

Url编码、解码
当url地址中包含有中文字符或其他非标准的url字符时,需要对该url地址进行编码。NSString提供编码和解码方法:
编码:stringByAddingPercentEscapesUsingEncoding

NSString *urlString=[NSString stringWithFormat:@"https://www.xxxx.com/?param=%@",@"中文"];

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

解码:stringByReplacingPercentEscapesUsingEncoding

NSString *urlStr = [@"xxx" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

UIWebView加载数据3种方法

1.- (void)loadRequest:(NSURLRequest *)request;

   NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    直接加载url地址。

2.- (void)loadHTMLString:(NSString )string baseURL:(NSURL )baseURL;

    如果获取到的是HTML字符串,可以用这个方法加载。

3.- (void)loadData:(NSData )data MIMEType:(NSString )MIMEType textEncodingName:(NSString )textEncodingName baseURL:(NSURL )baseURL;

NSURL *url = [NSURL URLWithString:urlString];
    NSData *data=[NSData dataWithContentsOfURL:url];
    [self.webView loadData:data MIMEType:@"text/html" textEncodingName:@"GBK" baseURL:nil];

编码格式有GB2312、GBK、UTF-8等许多种,当url地址的编码格式比较特殊时,可以用这个方法加载。

WebVIew高度自适应

1.实现下面的事件方法能使WebView大小高度自适应:

    遵守协议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”];