IPhone中的UiWebview根据内容大小调整大小

时间:2015-03-13 13:09:33

标签: ios objective-c iphone uiwebview

enter image description here我遇到了一个问题,比如我在Iphone中使用UIWebView,数据以HTML格式存储html数据作为astring并传递给UIWebView我很好,但是我想改变根据内容大小的UIWebView大小

    - (void)viewDidLoad {
        web.delegate = self; 
        NSString * str = [dict objectForKey:@"terms"];
        [web loadHTMLString:str baseURL:nil];
    }
- (void)webViewDidStartLoad:(UIWebView *)webView
{
        CGRect frame = web.frame;
        frame.size.height = 1;

        CGSize fittingSize = [web sizeThatFits:CGSizeZero];
        frame.size = fittingSize;
        web.frame = frame;

        NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);

     web.frame = CGRectMake(10, 100, web.scrollView.contentSize.width, web.scrollView.contentSize.height);

}

3 个答案:

答案 0 :(得分:2)

设置web view delegateframe

 yourwebview.frame=[[UIScreen mainScreen] bounds]; 
 yourwebview.delegate = self;

然后使用此委托方法设置高度。

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
        CGSize contentSize = aWebView.scrollView.contentSize;
        NSLog(@"webView contentSize: %@", NSStringFromCGSize(contentSize));
        yourwebview.contentsize = contentSize;
    }

答案 1 :(得分:1)

您可以使用委托方法webViewDidFinishLoad:,但有时会在完全呈现HTML之前调用此方法,这会导致错误的高度值。

为了使这项工作可靠,您必须等到HTML完全呈现,然后使用Javascript将正确的高度发送到您的UIWebView。

请看一下我前段时间写的blogpost

答案 2 :(得分:0)

使用您的网络视图的委托方法执行此操作:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    webView.frame = CGRectMake(0, 0, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
}