Với Xcode 8, điều này hiện có thể thực hiện được, nhưng ít nhất thì phương tiện để đạt được nó hơi khó. Nhưng này, một giải pháp làm việc là một giải pháp làm việc, phải không? Hãy để tôi giải thích.
InitWithCoder của WKWebView: không còn được chú thích là "NS_UNAVAILABLE". Bây giờ nó trông như hình dưới đây.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Bắt đầu bằng cách phân lớp con WKWebView và ghi đè initWithCoder. Thay vì gọi super initWithCoder, bạn sẽ cần sử dụng một phương thức init khác, chẳng hạn như initWithFrame: configuration :. Ví dụ nhanh bên dưới.
- (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;
}
Trong Bảng phân cảnh của bạn, hãy sử dụng UIView và cung cấp cho nó một lớp tùy chỉnh của lớp con mới của bạn. Phần còn lại là kinh doanh như bình thường (thiết lập các ràng buộc bố cục tự động, liên kết chế độ xem với một ổ cắm trong bộ điều khiển, v.v.).
Cuối cùng, WKWebView chia tỷ lệ nội dung khác với UIWebView. Nhiều người có thể sẽ muốn làm theo lời khuyên đơn giản trong Suppress WKWebView từ việc chia tỷ lệ nội dung để hiển thị ở mức độ phóng đại tương tự như UIWebView để làm cho WKWebView theo sát hành vi UIWebView hơn về mặt này.