2016-06-07 10 views
6

WKWebView nie zmienia rozmiaru po zmianie treści.Nie zmieniaj rozmiaru WKWebView po zmianie treści

Oto fragment kodu:

@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) 
} 

Co func należy dodać, więc może przechwytywać zawartość ulega zmianie rozmiaru i zmienić rozmiar containingView odpowiednio?

+0

WebView automatycznie przewija więc dlaczego trzeba zmienić jego wysokość do treści? – Shubhank

+0

Nie chcę, aby był przewijany. Chcę, aby widok zawierający zmiany przeskalował zgodnie z treścią WWW – Luda

+1

. Musisz użyć javascript, aby wykryć wysokość treści w przeglądarce i ustawić wysokość ręcznie. – Shubhank

Odpowiedz

-3

Konceptualnie w celu c należy wykonać poniżej.

dwie rzeczy: upewnij się, że te właściwości:

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

I wreszcie obliczyć Webview wysokość treści, jak: - webView.isLoading jest jedną z najważniejszych właściwości. Właściwie w jednym wywołaniu adresu internetowego nazywa się to wiele razy.

- (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]; 
} 

} 

W ten sposób należy obliczyć wysokość widoku strony.

można rzucić okiem tutaj jako WKWebView nie mają kasowania których można użyć, aby uzyskać rozmiaru zawartości zamiast używać KVO:

KVO example Może to pomoże Ci więcej!

+0

Używam WKWebView. Nie ma właściwości scalesPageToFit. – Luda

+0

Ale mówię, że zmieniam moją implementację na UIWebView, nadal są pewne przypadki, że webViewDidFinishLoad nie jest wywoływany, mimo że zawartość zmienia się na ekranie. – Luda

+0

webViewDidFinishLoad? czy jesteś pewien, że ustawiłeś delegata? – Alok

2

Co halped mi było mieć mały początkowa wysokość WKWebView

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

zamiast

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