我正在尝试使用UIWebView
来显示高于iPhone屏幕的内容,而无需滚动UIWebView
本身。
UIWebView
被放置为UIScrollView
的子视图,以及我希望UIScrollView
使用向上和向下滚动的其他一些对象UIWebView
。
我知道您可以使用UITextView
这样做:
CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame;
但UIWebView
不会从UIScrollView
继承,因此不包含contentSize
- 属性。
我真的想保留UIWebView
,因为我得到的数据是HTML块。
谢谢!
答案 0 :(得分:14)
事实上,不需要Javascript! 在UIView中有一个很好的方法:
- (CGSize)sizeThatFits:(CGSize)size
你传递任何东西(这里没有意义),它返回它想要的大小,使用它的内容(子视图等)来计算大小。
当然,由于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;
}
Et瞧!
答案 1 :(得分:7)
我认为你能够做到这一点的唯一方法是使用一些javascript来获取网页的大小并调整UIWebView控件的大小。
以下内容应该可以解决问题
int content_height = [[theWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] integerValue];
CGRect rect = theWebView.frame;
rect.size.height = content_height;
theWebView.frame = rect;
您可能需要在内容高度上添加某种软糖因子。