为什么我的UIWebView框架没有正确调整大小?

问题描述:

我用XIB做了这个完全相同的事情,它可以工作,但是我的故事板版本有些问题。为什么我的UIWebView框架没有正确调整大小?

这里是我的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正显示出约800个适当的WebView帧的高度。滚动查看内容大小完美约1000分。

我的滚动查看设置为红色背景。所以你可以在这里看到webview框架在屏幕上只有500点左右,其余的内容正在被切断。

任何想法?谢谢!

enter image description here

+0

关于我如何解决这个问题的详细信息可以在这里找到:http://*.com/questions/26699565/autolayout-constraint-that-uses-uiscrollview-contentsize – sayguh 2014-11-04 15:34:45

的问题是,自动布局负责幅视图的两个帧和滚动视图的内容的大小。你可以设置它们,当然如果你阅读它们,你就可以阅读你刚刚设置的内容;但你只是误导你自己,因为然后(在你的方法之外)自动布局出现,并将它们设置为真实的,你看到(与你无意义的NSLog读数相反)是自动布局设置的结果。您需要正确配置您的约束条件,以便自动布局完成您想要的操作。

自动布局未在.xib文件中打开,因此您没有遇到此问题。但它在故事板中打开。

+0

非常感谢您的解释。但是当你处理我的UIWebView的可变内容大小时,你是否知道如何正确设置我的约束?这不需要在代表didfinishload中确定吗? – sayguh 2014-11-02 02:20:03

+0

我不清楚你想做什么。 Web视图具有内部滚动视图,它将设置滚动视图的内容大小,以便用户可以查看整个网页。你不必做任何事情。现在,您还有_another_滚动视图;我不知道为什么(滚动视图内的web视图内的滚动视图????)。无论如何,你可以设置外层滚动视图的contentSize,但是你必须在内容中使用_constraints_,或者你必须关闭滚动视图内部的自动布局,正如我在这里解释的那样:http:// * .com/a/13548039/341994 – matt 2014-11-02 02:47:18

+0

我有一个scollview,里面有一个webview和其他视图,我想全部滚动到一起。我禁用了作为webview一部分的滚动视图。我会读你的链接! – sayguh 2014-11-02 03:12:31