2016-06-07 95 views
6

當內容更改時,WKWebView不調整大小。當內容更改時WKWebView不調整大小

下面的代碼片段:

@IBOutlet weak var containingView: UIView! 
var webView: WKWebView! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    let contentController = WKUserContentController(); 
    self.webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), configuration: WKWebViewConfiguration()) 
    self.webView.autoresizingMask = [.FlexibleHeight] 
    self.webView.loadHTMLString(__, baseURL: __)) 
    self.webView.scrollView.bounces = false 
    self.webView.scrollView.scrollEnabled = false 

    self.containingView.addSubview(self.webView) 
} 

什麼FUNC應加入這樣我就可以攔截內容的大小而改變,並相應地改變containingView大小?

+0

的WebView自動滾動,使你爲什麼需要它的高度,以改變內容? – Shubhank

+0

我不希望它是可滾動的。我想根據網頁內容 – Luda

+1

重新調整包含視圖,您需要使用javascript來檢測webview內容高度並手動設置高度 – Shubhank

回答

-3

從概念上講,在目標c中,你應該像下面這樣做。

兩件事情: 確保有這些屬性:

self.webView.scalesPageToFit = YES; 
self.webView.contentMode = UIViewContentModeScaleAspectFit; 

最後計算出視圖內容高度: - webView.isLoading是最重要的屬性之一。實際上,在一次調用Web網址時,會多次調用它。

- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
if (webView.isLoading == NO)// as it is called multiple times so wait untill last call 
{ 
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue]; 
} 

} 

這就是你應該如何計算web視圖高度。

,你可以看看這裏WKWebView沒有刪除,你可以用它來獲得內容的大小,而不是使用志願:

KVO example 可能它會幫助你更多!

+0

我正在使用WKWebView。它沒有scalesPageToFit屬性 – Luda

+0

但是說我正在改變我的實現UIWebView,仍然有一些情況下,即使內容在屏幕上更改不調用webViewDidFinishLoad – Luda

+0

webViewDidFinishLoad?你確定你已經設置了代表 – Alok

2

什麼halped我是有小的初始WKWebView高度

webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, 150), configuration: configuration) 

代替

webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), configuration: configuration)