Mit Xcode 8 ist dies jetzt möglich, aber die Mittel, um dies zu erreichen, sind gelinde gesagt ein wenig hackig. Aber hey, eine funktionierende Lösung ist eine funktionierende Lösung, oder? Lassen Sie mich erklären.
WKWebViews initWithCoder: wird nicht mehr als "NS_UNAVAILABLE" bezeichnet. Es sieht jetzt wie unten gezeigt aus.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Beginnen Sie mit der Unterklasse von WKWebView und überschreiben Sie initWithCoder. Anstatt super initWithCoder aufzurufen, müssen Sie eine andere init-Methode verwenden, z. B. initWithFrame: configuration:. Kurzes Beispiel unten.
- (instancetype)initWithCoder:(NSCoder *)coder
{
// An initial frame for initialization must be set, but it will be overridden
// below by the autolayout constraints set in interface builder.
CGRect frame = [[UIScreen mainScreen] bounds];
WKWebViewConfiguration *myConfiguration = [WKWebViewConfiguration new];
// Set any configuration parameters here, e.g.
// myConfiguration.dataDetectorTypes = WKDataDetectorTypeAll;
self = [super initWithFrame:frame configuration:myConfiguration];
// Apply constraints from interface builder.
self.translatesAutoresizingMaskIntoConstraints = NO;
return self;
}
Verwenden Sie in Ihrem Storyboard eine UIView und geben Sie ihr eine benutzerdefinierte Klasse Ihrer neuen Unterklasse. Der Rest ist wie gewohnt (Festlegen von Einschränkungen für das automatische Layout, Verknüpfen der Ansicht mit einer Steckdose in einem Controller usw.).
Schließlich skaliert WKWebView den Inhalt anders als UIWebView. Viele Leute werden wahrscheinlich den einfachen Ratschlägen in Unterdrücken von WKWebView folgen wollen, indem sie Inhalte skalieren, um sie mit der gleichen Vergrößerung wie UIWebView zu rendern , damit WKWebView das UIWebView-Verhalten in dieser Hinsicht genauer verfolgt.