Dieser Beitrag erklären wie man den Zoom verwaltet.
WebKit: New Interaction Behaviors in iOS 10
In iOS 10 "ignoresViewportScaleLimits" Eigenschaft wurde in WKWebView, hinzugefügt, die standardmäßig falsch ist. Der Beitrag empfiehlt, auf true zu setzen und den Zoom auf der Seite korrekt zu verwalten.
Hinweis: In Safari und SafariViewController ist der Wert für diese Eigenschaft standardmäßig true.
In meinem Fall möchte ich in einigen Fällen den Zoom zurücksetzen. Aus diesem Grund war die Änderung der maximalen Skalierung auf 1.0 und danach auf 10.0 die einzige Möglichkeit, die ich gefunden habe.
NSString* js =
@"var meta = document.createElement('meta'); " \
"meta.setAttribute('name', 'viewport'); " \
"meta.setAttribute('content', 'width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes'); " \
"document.getElementsByTagName('head')[0].appendChild(meta)";
[_wkWebview evaluateJavaScript:js completionHandler:^(id _Nullable object, NSError * _Nullable error) {
NSString* js =
@"var meta = document.createElement('meta'); " \
"meta.setAttribute('name', 'viewport'); " \
"meta.setAttribute('content', 'width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 10.0, user-scalable = yes'); " \
"document.getElementsByTagName('head')[0].appendChild(meta)";
[_wkWebview evaluateJavaScript:js completionHandler:nil];
}];
Dieser Code sollte funktioniert, aber ich empfehle die „Ansichtsfenster“ immer in dem HTML-Code zu erstellen und eine Funktion (dh resetZoom oder disableZoom) in Javascript erstellen aus Objective-C direkt anrufen (es ist sauberer)
Ich hoffe es hilft.
Ja, das funktioniert gut. Vielen Dank. –