【问题标题】:Why is my UIWebView frame not resizing properly?为什么我的 UIWebView 框架没有正确调整大小?
【发布时间】:2014-12-28 17:50:33
【问题描述】:

我用 XIB 做了同样的事情,它可以工作,但是我的故事板版本有问题。

这是我的 UIWebView 委托代码

#pragma mark - UIWebViewDelegate Protocol Methods
- (void)webViewDidFinishLoad:(UIWebView *)webView {

    CGRect frame = webView.frame;
    frame.size.height = webView.scrollView.contentSize.height;
    _webView.frame = frame;

    NSLog(@"Webview Frame height is %f", _webView.frame.size.height);

    _scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, _headerImageView.frame.size.height + webView.frame.size.height);

    NSLog(@"scrollview content height is %f", _scrollView.contentSize.height);

}

NSLog 显示正确的 webview 框架高度约为 800 点。 Scrollview 内容大小完美,大约 1000 点。

我的 Scrollview 设置为红色背景。所以你可以在这里看到 webview 框架在屏幕上只有大约 500 个点,其余的内容都被截断了。

有什么想法吗?谢谢!

【问题讨论】:

标签: ios xcode ios7 uiwebview xcode6


【解决方案1】:

问题是自动布局同时负责 web 视图的框架和滚动视图的内容大小。你可以设置它们,当然,如果你再读它们,你就读到了你刚刚设置的东西;但是您只是在误导自己,因为随后(在您的方法之外)出现了自动布局并将它们设置为真实,而您看到的内容(与您毫无意义的 NSLog 读数相反)是自动布局的设置。您需要正确配置约束,以便自动布局执行您希望它执行的操作。

.xib 文件中未启用自动布局,因此您没有遇到此行为。但它已在您的故事板中打开。

【讨论】:

  • 非常感谢您的解释。但是您知道在处理 UIWebView 的可变内容大小时如何正确设置约束吗?这不需要在委托 didfinishload 中确定吗?
  • 我不清楚您要做什么。 Web 视图有一个内部滚动视图,它将设置该滚动视图的内容大小,以便用户可以查看整个网页。你不必做任何事情。现在,您还有 另一个 滚动视图;我不知道为什么(滚动视图内的网络视图内的滚动视图????)。无论如何,您可以设置外部滚动视图的contentSize,但您必须使用其中的 约束 进行设置,或者您必须关闭滚动视图内部的自动布局,正如我解释的那样这里:stackoverflow.com/a/13548039/341994
  • 我有一个 scollview ,里面有一个 webview 和其他视图,我想一起滚动。我已经禁用了作为 webview 一部分的滚动视图。我会读你的链接!
  • 嘿,马特,我怎样才能向我的 UIWebView 添加一个高度约束,该约束被固定到滚动视图超级视图的 contentsize 上?
猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多