2014-11-01 123 views
2

我用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://stackoverflow.com/questions/26699565/autolayout-constraint-that-uses-uiscrollview-contentsize – sayguh 2014-11-04 15:34:45

回答

2

的問題是,自動佈局負責幅視圖的兩個幀和滾動視圖的內容的大小。你可以設置它們,當然如果你閱讀它們,你就可以閱讀你剛剛設置的內容;但你只是誤導你自己,因爲然後(在你的方法之外)自動佈局出現,並將它們設置爲真實的,你看到(與你無意義的NSLog讀數相反)是自動佈局設置的結果。您需要正確配置您的約束條件,以便自動佈局完成您想要的操作。

自動佈局未在.xib文件中打開,因此您沒有遇到此問題。但它在故事板中打開。

+0

非常感謝您的解釋。但是當你處理我的UIWebView的可變內容大小時,你是否知道如何正確設置我的約束?這不需要在代表didfinishload中確定嗎? – sayguh 2014-11-02 02:20:03

+0

我不清楚你想做什麼。 Web視圖具有內部滾動視圖,它將設置滾動視圖的內容大小,以便用戶可以查看整個網頁。你不必做任何事情。現在,您還有_another_滾動視圖;我不知道爲什麼(滾動視圖內的web視圖內的滾動視圖????)。無論如何,你可以設置外層滾動視圖的contentSize,但是你必須在內容中使用_constraints_,或者你必須關閉滾動視圖內部的自動佈局,正如我在這裏解釋的那樣:http:// stackoverflow .com/a/13548039/341994 – matt 2014-11-02 02:47:18

+0

我有一個scollview,裏面有一個webview和其他視圖,我想全部滾動到一起。我禁用了作爲webview一部分的滾動視圖。我會讀你的鏈接! – sayguh 2014-11-02 03:12:31

相關問題