设置UIWebView的宽度和高度

6

我需要调整UIWebView的高度和宽度,以便整个文本都在视图内显示,用户无需滚动即可阅读文本。

有人知道如何实现吗?

3个回答

8

我正在使用UIWebView+SFHFStringMetrics,但是得到的尺寸为(0.00,0.00),你能指导我犯了什么错误吗? - Muhammad Saqib

4
希望这能为你指明正确的方向。
通过在UIWebView上调用stringByEvaluatingJavaScriptFromString:方法,您可以在UIWebView中从应用程序执行JavaScript。
// get the height of your content
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"];

// get the width of your content
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"];

上述代码将返回一个NSString对象,其中包含您传递给getElementById函数的任何元素的宽度和高度。有了这些信息,您应该能够调整UIWebView的大小以适应您的内容。例如:

CGRect frame = webView.frame;
frame.size.width = 100;
webView.frame = frame;

您可能需要重新设置scalesPageToFit以使内容重新调整到新的框架大小。

另一个选项是在HTML端检测window.heightwindow.width,并使用JavaScript调整内容以适应UIWebView的方面。


1
不改变 UIWebView 的框架是关键... 比如说,UIWebView 的宽度和高度分别设置为320和440... 现在的想法是只适应显示在这个320x440视图中的 HTML 内容... 有什么建议吗? - aditya
就像其他答案所指出的那样,我认为你无法在应用程序端完成这个任务。你需要在 HTML 端编写一些 JavaScript 代码来确定窗口的宽度/高度,并将其与内容容器的宽度/高度进行比较并相应地进行调整。 - Intelekshual

1

UIWebView 没有特殊的规定来调整大小以适应内容。您可以将 scalesPageToFit 属性设置为 YES 以缩小内容,或者您可以使视图足够大以适应大多数合理大小的页面。我从您的问题中推断出您正在显示自己控制的内容。如果不是这样,我不确定是否有一种简单的编程方法来实现您想要的效果。


非常感谢您的答案!!!是的,试过将scalesPageToFit属性设置为YES....但它会使内容缩小太多,无法读取... - aditya
看起来上面建议的UIWebView+SFHFStringMetrics类别可能会很有用。它调用了一些Javascript来确定文档的尺寸。 - warrenm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接