2015-11-25 4 views
7

Wenn Sie unter iOS eine contentInset auf eine Bildansicht von WKWebView setzen, scheint die Webansicht zu denken, dass der Inhalt der Seite größer ist als er ist. Wenn Sie beispielsweise einer meist leeren Seite eine obere oder untere contentInset geben, können Sie die Seite nach unten scrollen, obwohl nichts zu scrollen ist.WKWebView + contentInset macht die Inhaltsgröße falsch

Ist das erwartete Verhalten? Gibt es eine Problemumgehung, die es mir noch ermöglicht, contentInset zu verwenden?

Antwort

4

Das Problem ist, dass WKWebView immer scheint, seinen Rahmen als seine Ansichtsfenstergröße zu verwenden, unter Vernachlässigung Subtrahieren der scrollView contentInset. Ich konnte eine workaround von stephan-leroux finden.

Die Idee ist, den WKWebView-Rahmen auf die gewünschte Größe des Darstellungsbereichs entweder manuell oder mithilfe von automatischen Layout-Einschränkungen festzulegen. Um die „Scroll-unter“ -Effekt von contentInset wiederherzustellen, deaktivieren Sie die Scroll des masksToBounds:

wkWebview.scrollView.layer.masksToBounds = NO; 
1

Weiyin der suggestion (Ändern der Größe der Web-Ansicht des Rahmens) für mich gearbeitet.

Ich wollte nur ein Codebeispiel teilen:

CGFloat topInset = ...; 
web.scrollView.layer.masksToBounds = NO; 
[web.scrollView setContentInset:UIEdgeInsetsMake(topInset, 0, 0, 0)]; 
[web setFrame:CGRectMake(0, 0, web.width, web.height-topInset)];