Avec Xcode 8, c'est désormais possible, mais les moyens d'y parvenir sont pour le moins un peu piratés. Mais bon, une solution de travail est une solution de travail, non? Laisse-moi expliquer.
InitWithCoder de WKWebView: n'est plus annoté comme "NS_UNAVAILABLE". Il ressemble maintenant à l'illustration ci-dessous.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Commencez par sous-classer WKWebView et remplacez initWithCoder. Au lieu d'appeler super initWithCoder, vous devrez utiliser une méthode init différente, telle que initWithFrame: configuration :. Exemple rapide ci-dessous.
- (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;
}
Dans votre Storyboard, utilisez un UIView et donnez-lui une classe personnalisée de votre nouvelle sous-classe. Le reste est normal (définition de contraintes de mise en page automatique, liaison de la vue à une prise dans un contrôleur, etc.).
Enfin, WKWebView met à l'échelle le contenu différemment de UIWebView. De nombreuses personnes voudront probablement suivre le conseil simple de Supprimer WKWebView de la mise à l'échelle du contenu pour le rendre au même grossissement que UIWebView pour que WKWebView suive de plus près le comportement d'UIWebView à cet égard.