2016-01-25 38 views
11

Ho un UIViewController con alcune UIViews (create utilizzando Interface Builder), incluso uno che voglio utilizzare come WKWebView. Sono stato in grado di creare il WKWebView e caricarlo come sottoview a una di queste UIViews - ma quando carico l'URL ottengo questo strano padding in alto ea sinistra. Ho avuto lo stesso problema quando uso l'UIWebView ma era in grado di risolverlo utilizzandoStrana margine in WKWebView

self.automaticallyAdjustsScrollViewInsets = false; 

Tuttavia questo non sembra aiutare a tutti con la WKWebView che è stata caricata in modo dinamico.

Ho anche lo stesso riempimento quando carico una pagina dal web, quindi so che non è nel mio html locale.

Edit: Sto cominciando a chiedersi se AutoLayout nel UIView container sta causando questo ...

Ecco il codice in questione:

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) 
} 

Ecco quello che sembra. Il colore BG del contenitore UIView è grigio scuro e noterai anche che l'html sembra estendersi oltre l'UIView anche se ho impostato il frame di WebView per essere uguale al contenitore UIView:

enter image description here

+0

stavo caricando la sorgente html da solo nella webview. Aggiungere il tag di stile e impostare il margine su zero ha funzionato per me. akshay1188

risposta

7

Questo perché WKWebView conserva lo spazio per la barra di spostamento utilizzando uno contentInset appropriato. Tuttavia, dal momento che WKWebView è una sottoview, questa regolazione non è più necessaria.

self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) 

E 'importante fare questo dopo che il metodo viewDidLoad. Ad esempio in didFinishedNavigation nello WKNavigationDelegate

+5

Fatto divertente, in Swift questo è ancora più bello da scrivere: 'webView.scrollView.contentInset = .zero' –

+1

L'equivalente Objective-C sarebbe:' webView.scrollView.contentInset = UIEdgeInsetsZero' –

+0

mi chiedo, perché dopo il metodo viewDidLoad? –