I have set the WKWebView
bottom constraint to super view but it won't display till super view instead displays content till safe area.
Here is the problem image that displays the bottom part doesn't fill properly.
And here is the hierarchy of view and constraints image
And code to setup WebView constraints with the container view
let wv = WKWebView(frame: containerView.frame, configuration: wvConfig)
webView = wv
containerView.addSubview(wv)
// setup constraints
wv.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
wv.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true
wv.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true
wv.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
wv.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
} else {
NSLayoutConstraint(item: wv, attribute: .top, relatedBy: .equal, toItem: containerView, attribute: .top, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: wv, attribute: .leading, relatedBy: .equal, toItem: containerView, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: wv, attribute: .trailing, relatedBy: .equal, toItem: containerView, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: wv, attribute: .bottom, relatedBy: .equal, toItem: containerView, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
}
So, Can anyone rectify the issue here?
Some certain URL's works, but not for all. Why?
The following subclassed WKWebView might solve your problem:
class FullScreenWKWebView: WKWebView {
override var safeAreaInsets: UIEdgeInsets {
if #available(iOS 11.0, *) {
let insects = super.safeAreaInsets
return UIEdgeInsets(top: insects.top, left: insects.left, bottom: 0, right: insects.right)
} else {
return .zero
}
}
override var alignmentRectInsets: UIEdgeInsets{
let insects = super.alignmentRectInsets
return UIEdgeInsets(top: insects.top-20, left: insects.left, bottom: 0, right: insects.right)
}
}
The above snipped taken from
Full Code:
import UIKit
import WebKit
class FullScreenWKWebView: WKWebView {
override var safeAreaInsets: UIEdgeInsets {
if #available(iOS 11.0, *) {
let insects = super.safeAreaInsets
return UIEdgeInsets(top: insects.top, left: insects.left, bottom: 0, right: insects.right)
} else {
return .zero
}
}
override var alignmentRectInsets: UIEdgeInsets{
let insects = super.alignmentRectInsets
return UIEdgeInsets(top: insects.top-20, left: insects.left, bottom: 0, right: insects.right)
}
}
class ViewController: UIViewController {
let contaienrView: UIView = {
let v = UIView()
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
let webView: FullScreenWKWebView = {
let v = FullScreenWKWebView()
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
func setupViews(){
view.addSubview(contaienrView)
contaienrView.addSubview(webView)
let constrains = [
contaienrView.topAnchor.constraint(equalTo: view.topAnchor),
contaienrView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
contaienrView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
contaienrView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
webView.topAnchor.constraint(equalTo: contaienrView.topAnchor),
webView.leadingAnchor.constraint(equalTo: contaienrView.leadingAnchor),
webView.bottomAnchor.constraint(equalTo: contaienrView.bottomAnchor),
webView.trailingAnchor.constraint(equalTo: contaienrView.trailingAnchor),
]
NSLayoutConstraint.activate(constrains)
}
func loadRequest(){
let url = URL(string: "https://afghan-gps.com/mobile")!
let request = URLRequest(url: url)
webView.load(request)
}
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
loadRequest()
}
}
output: 1. iOS version > 10
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With