2016-01-25 17 views
11

私は、WKWebViewとして使用したいUIViewを含むいくつかのUIView(Interface Builderを使用して構築)を持つUIViewControllerを持っています。私はWKWebViewを作成し、これらのUIViewの1つにサブビューとしてロードすることができました。しかし、URLをロードすると、この奇妙なパディングが上端と左端に表示されます。私はのUIWebViewを使用する場合、同じ問題があったが、しかし、これは動的にロードされたWKWebViewとまったく助けていないようですWKWebViewの奇妙なマージン

self.automaticallyAdjustsScrollViewInsets = false; 

を使用してそれを解決することができました。

ウェブからページを読み込むときに同じパディングが表示されるので、私のローカル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) 
} 

それがどのように見えるかです。 UIViewコンテナのBGカラーは濃い灰色です.WebViewのフレームをUIViewコンテナと同じに設定しても、htmlがUIViewを超えているように見えます。 enter image description here

+0

で、私は自分自身をwebviewに読み込んでいました。スタイル・タグを追加し、マージンをゼロに設定することは私の仕事でした。 akshay1188

答えて

7

WKWebViewは、適切なcontentInsetを使用してナビゲーションバーのスペースを保存するためです。ただし、WKWebViewはサブビューであるため、この調整はもう必要ありません。

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

viewDidLoadの方法の後でこれを行うことが重要です。たとえば、のWKNavigationDelegate

+5

スウィフトでは、これを書いた方が面白いです: 'webView.scrollView.contentInset = .zero' –

+1

Objective-Cに相当するのは' webView.scrollView.contentInset = UIEdgeInsetsZero'です。 –

+0

私は、なぜviewDidLoadメソッドの後に不思議に思う? –