2016-01-25 23 views
11

Tôi có UIViewController với một vài UIViews (được xây dựng bằng cách sử dụng Trình tạo giao diện) bao gồm một cái mà tôi muốn sử dụng làm WKWebView. Tôi đã có thể tạo WKWebView và tải nó như là một subview cho một trong những UIViews - nhưng khi tôi tải URL tôi nhận được đệm này lạ trên đầu trang và bên trái. Tôi đã cùng một vấn đề khi tôi sử dụng UIWebView nhưng đã có thể giải quyết nó bằng cách sửKý tự lạ trong WKWebView

self.automaticallyAdjustsScrollViewInsets = false; 

Tuy nhiên điều này dường như không giúp gì cả với WKWebView đã được nạp tự động.

Tôi cũng nhận được cùng một vùng đệm khi tải một trang từ web để tôi biết nó không nằm trong html cục bộ của tôi.

Chỉnh sửa: Tôi bắt đầu tự hỏi liệu autolayout trong UIView container được gây ra điều này ...

Đây là mã có liên quan:

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

Đây là những gì nó trông như thế nào. Màu BG của vùng chứa UIView có màu xám đậm - và bạn cũng sẽ lưu ý rằng html dường như mở rộng ra ngoài UIView mặc dù tôi đã đặt khung của WebView giống với vùng chứa UIView:

enter image description here

+0

Tôi đã tải nguồn html chính mình trong chế độ xem web. Thêm thẻ kiểu và đặt lề thành 0 làm việc cho tôi. akshay1188

Trả lời

7

Điều này là do WKWebView duy trì dung lượng cho thanh điều hướng bằng cách sử dụng contentInset thích hợp. Tuy nhiên, vì WKWebView của bạn là chế độ xem phụ, điều chỉnh này không cần thiết nữa.

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

Điều quan trọng là làm điều này sau phương pháp viewDidLoad. Ví dụ: didFinishedNavigation trong WKNavigationDelegate

+5

Thực tế thú vị, trong Swift, điều này thậm chí còn đáng yêu hơn để viết: 'webView.scrollView.contentInset = .zero' –

+1

Tương đương Objective-C sẽ là:' webView.scrollView.contentInset = UIEdgeInsetsZero' –

+0

khiến tôi tự hỏi, tại sao sau phương thức viewDidLoad? –

Các vấn đề liên quan