Con Xcode 8 ora è possibile, ma i mezzi per ottenerlo sono a dir poco un po 'complicati. Ma hey, una soluzione funzionante è una soluzione funzionante, giusto? Lasciatemi spiegare.
InitWithCoder di WKWebView: non è più annotato come "NS_UNAVAILABLE". Ora appare come mostrato di seguito.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Inizia creando una sottoclasse WKWebView e sovrascrivi initWithCoder. Invece di chiamare super initWithCoder, dovrai usare un metodo init diverso, come initWithFrame: configuration :. Un rapido esempio di seguito.
- (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;
}
Nel tuo Storyboard, usa una UIView e assegnagli una classe personalizzata della tua nuova sottoclasse. Il resto è come al solito (impostazione dei vincoli di layout automatico, collegamento della vista a una presa in un controller, ecc.).
Infine, WKWebView ridimensiona il contenuto in modo diverso rispetto a UIWebView. Molte persone probabilmente vorranno seguire il semplice consiglio in Impedisci a WKWebView di ridimensionare il contenuto per renderlo con lo stesso ingrandimento di UIWebView per fare in modo che WKWebView segua più da vicino il comportamento di UIWebView a questo proposito.