UIWebView - 自动调整大小,以便不需要滚动(在 webView 本身中)

发布于 2024-09-03 21:59:57 字数 578 浏览 5 评论 0原文

我正在尝试使用 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 块中。

谢谢你!

I'm trying to use a UIWebView for displaying content higher than the screen of the iPhone, without needing to scroll in the UIWebView itself.

The UIWebView is placed as a subview to a UIScrollView, along with some other objects that I want the UIScrollView to scroll up and down with the UIWebView.

I know you can do this with a UITextView like this:

CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame;

But the UIWebView does not inherit from UIScrollView and does therefore not contain the contentSize-property.

I'd really like to keep it a UIWebView, because the data I get is in HTML-blocks.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝戈者 2024-09-10 21:59:58

事实上,不需要Javascript!
在 UIView 中,有一个很好的方法:

- (CGSize)sizeThatFits:(CGSize)size

你向它传递任何东西(这里没有真正的意义),它返回它想要的大小,使用它的内容(子视图等)来计算大小。

当然,由于 UIWebView 中的内容加载是异步的,因此您应该在 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;
}

等等瞧!

In fact, no Javascript is needed!
In UIView there is a nice method:

- (CGSize)sizeThatFits:(CGSize)size

You pass it anything (not really meaningful here), and it returns the size it'd like to be, using its content (subviews, etc) to compute the size.

Of course, since content loading in a UIWebView in asynchronous, you should do this after the webview has loaded, for instance in the UIWebViewDelegate method:

- (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 voila!

携君以终年 2024-09-10 21:59:58

我认为您能够做到这一点的唯一方法是使用一些 javascript 来获取网页的大小并调整 UIWebView 控件的大小。

像下面这样的东西应该可以解决问题

int content_height = [[theWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] integerValue];
CGRect rect = theWebView.frame;
rect.size.height = content_height;
theWebView.frame = rect;

您可能需要在内容高度中添加某种软糖系数。

I think the only way you'll be able to do this is to use some javascript to get the size of the web page and adjust the size of the UIWebView control.

Something like the following should do the trick

int content_height = [[theWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] integerValue];
CGRect rect = theWebView.frame;
rect.size.height = content_height;
theWebView.frame = rect;

You may need to add some sort of fudge factor to the content height.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文