Emi*_*mil 9 iphone uiwebview uiscrollview uitextview autoresize
我正在尝试使用a UIWebView来显示比iPhone屏幕更高的内容,而不需要滚动UIWebView自己.
将UIWebView被作为一个子视图到UIScrollView,伴随着我想要的一些其他对象UIScrollView来上下滚动使用的UIWebView.
我知道你可以这样做UITextView:
CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame;
Run Code Online (Sandbox Code Playgroud)
但是UIWebView它不会继承,UIScrollView因此不包含contentSize-property.
我真的很想保留它UIWebView,因为我得到的数据是HTML块.
谢谢!
jv4*_*v42 14
事实上,不需要Javascript!在UIView中有一个很好的方法:
- (CGSize)sizeThatFits:(CGSize)size
Run Code Online (Sandbox Code Playgroud)
你传递任何东西(这里没有真正意义),它返回它想要的大小,使用它的内容(子视图等)来计算大小.
当然,由于UIWeb中的内容在异步中加载,因此您应该在加载webview之后执行此操作,例如在UIWebViewDelegate方法中:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGSize size = [webView sizeThatFits: CGSizeMake(1.0f, 1.0f)]; // Pass about any size
CGRect frame = webView.frame;
frame.size.height = size.height;
webView.frame = frame;
}
Run Code Online (Sandbox Code Playgroud)
瞧瞧!
我认为你能够做到这一点的唯一方法是使用一些javascript来获取网页的大小并调整UIWebView控件的大小.
像下面这样的东西应该做的伎俩
int content_height = [[theWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] integerValue];
CGRect rect = theWebView.frame;
rect.size.height = content_height;
theWebView.frame = rect;
Run Code Online (Sandbox Code Playgroud)
您可能需要在内容高度上添加某种软糖因子.