З Xcode 8 це тепер можливо, але спосіб досягнення цього - це, м’яко кажучи, трохи невдало. Але привіт, робоче рішення - це робоче рішення, так? Дозволь пояснити.
InitWithCoder WKWebView: більше не коментується як "NS_UNAVAILABLE". Тепер це виглядає так, як показано нижче.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Почніть з підкласу WKWebView та перевизначте initWithCoder. Замість виклику супер initWithCoder вам потрібно буде використовувати інший метод init, такий як initWithFrame: configuration :. Короткий приклад нижче.
- (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;
}
У своїй Раскадровці використовуйте UIView і надайте йому власний клас вашого нового підкласу. Решта - звичайна справа (встановлення обмежень на автоматичне розміщення, прив’язка подання до розетки в контролері тощо).
Нарешті, WKWebView масштабує вміст інакше, ніж UIWebView. Багато людей, швидше за все, захочуть дотримуватися простих порад щодо придушення WKWebView від масштабування вмісту до відтворення з таким самим збільшенням, як це робить UIWebView, щоб зробити WKWebView більш уважно стежити за поведінкою UIWebView у цьому відношенні.