IPhone 中的 UiWebview 根据内容大小调整大小
UiWebview in IPhone resize as per the content size
我遇到了一个问题,比如我在 Iphone 中使用 UIWebView 并且数据来自 HTML 我将 html 数据存储为字符串并传递给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);
}
设置你的web view delegate
和frame
。
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;
}
使用您的 Web 视图的委托方法执行此操作:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
webView.frame = CGRectMake(0, 0, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
}
您可以使用委托方法 webViewDidFinishLoad:
,但有时会在 HTML 完全呈现之前调用此方法,这会导致错误的高度值。
为了使这项工作可靠,您必须等到 HTML 完全呈现,然后使用 Javascript 将正确的高度发送到您的 UIWebView。
请看一下我前段时间写的blogpost。
- (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);
}
设置你的web view delegate
和frame
。
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;
}
使用您的 Web 视图的委托方法执行此操作:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
webView.frame = CGRectMake(0, 0, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height);
}
您可以使用委托方法 webViewDidFinishLoad:
,但有时会在 HTML 完全呈现之前调用此方法,这会导致错误的高度值。
为了使这项工作可靠,您必须等到 HTML 完全呈现,然后使用 Javascript 将正确的高度发送到您的 UIWebView。
请看一下我前段时间写的blogpost。