Странная маржа в WKWebView
У меня есть UIViewController с несколькими UIViews (построенными с помощью Interface Builder), включая тот, который я хочу использовать как WKWebView. Я смог создать WKWebView и загрузить его как подзаголовок в один из этих UIViews, но когда я загружаю URL-адрес, я получаю это странное дополнение вверху и слева. У меня была такая же проблема, когда я использовал UIWebView, но смог ее решить, используя
self.automaticallyAdjustsScrollViewInsets = false;
Однако это, похоже, совсем не помогает с WKWebView, который был загружен динамически.
Я также получаю такое же дополнение при загрузке страницы из Интернета, поэтому я знаю ее не в моем локальном html.
Изменить: я начинаю задаваться вопросом, вызывает ли автоопределение в контейнере UIView...
Вот соответствующий код:
var webView:WKWebView!
@IBOutlet var containerView : UIView?
@IBOutlet weak var webContainer: UIView!
override func loadView() {
super.loadView()
self.webView = WKWebView()
if(self.webView != nil){
self.containerView = self.webView!
self.containerView!.frame = self.webContainer.frame
self.webContainer.addSubview(self.containerView!)
}
}
override func viewDidLoad() {
super.viewDidLoad()
let bundle = NSBundle.mainBundle()
let url = bundle.URLForResource("index", withExtension: "html")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
}
Вот как это выглядит. Цвет BG контейнера UIView темно-серый - и вы также заметите, что html, похоже, выходит за пределы UIView, даже если я установил фрейм WebView таким же, как контейнер UIView:
![введите описание изображения здесь]()
Ответы
Ответ 1
Это связано с тем, что WKWebView
сохраняет пространство для панели навигации с помощью соответствующего contentInset
. Однако, поскольку ваш WKWebView является подчиненным, эта настройка больше не нужна.
self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
Это важно сделать после метода viewDidLoad
. Например, в didFinishedNavigation
в WKNavigationDelegate
Ответ 2
self.automaticallyAdjustsScrollViewInsets = NO;
if (@available(iOS 11.0, *)) {
self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}