Xcode 8을 사용하면 이제 가능하지만이를 달성하는 방법은 아무리 말도 안해도 약간 엉망입니다. 하지만 작동하는 솔루션은 작동하는 솔루션입니다. 설명하겠습니다.
WKWebView의 initWithCoder :는 더 이상 "NS_UNAVAILABLE"로 주석 처리되지 않습니다. 이제 아래와 같이 보입니다.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
WKWebView를 서브 클래 싱하여 시작하고 initWithCoder를 재정의합니다. super initWithCoder를 호출하는 대신 initWithFrame : configuration :과 같은 다른 init 메서드를 사용해야합니다. 아래의 빠른 예.
- (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;
}
Storyboard에서 UIView를 사용하고 새 하위 클래스의 사용자 정의 클래스를 제공하십시오. 나머지는 평소와 같이 업무입니다 (자동 레이아웃 제약 설정,보기를 컨트롤러의 콘센트에 연결 등).
마지막으로 WKWebView는 UIWebView와 다르게 콘텐츠를 확장합니다. 많은 사람들이 다음의 간단한 조언을 따르기를 원할 것입니다. 점에서 WKWebView가 UIWebView 동작을 더 가깝게 따르기 위해 UIWebView가 수행하는 것과 동일한 배율로 렌더링하도록 콘텐츠 크기 조정에서 WKWebView 억제 입니다.