2016-06-07 7 views
6

WKWebView не изменяется при изменении контента.WKWebView не изменяет размер при изменении содержимого

Вот фрагмент кода:

@IBOutlet weak var containingView: UIView! 
var webView: WKWebView! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    let contentController = WKUserContentController(); 
    self.webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), configuration: WKWebViewConfiguration()) 
    self.webView.autoresizingMask = [.FlexibleHeight] 
    self.webView.loadHTMLString(__, baseURL: __)) 
    self.webView.scrollView.bounces = false 
    self.webView.scrollView.scrollEnabled = false 

    self.containingView.addSubview(self.webView) 
} 

Что FUNC должны быть добавлены, чтобы я мог перехватывать размер содержимого изменяется и изменить размер containingView соответственно?

+0

WebView автоматически прокручивается так зачем вам его высоту, чтобы изменить содержание? – Shubhank

+0

Я не хочу, чтобы он прокручивался. Я хочу, чтобы содержащее представление перемасштабировалось в соответствии с веб-контентом – Luda

+1

, вам нужно будет использовать javascript для определения высоты содержимого веб-страниц и установки высоты вручную. – Shubhank

ответ

-3

Концептуально в объективе c вы должны сделать, как показано ниже.

Две вещи: Убедитесь, чтобы эти свойства:

self.webView.scalesPageToFit = YES; 
self.webView.contentMode = UIViewContentModeScaleAspectFit; 

И, наконец, рассчитать Webview содержание высоты, как: - webView.isLoading является одним из наиболее важных свойства. Фактически в одном вызове веб-url он называется несколько раз.

- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
if (webView.isLoading == NO)// as it is called multiple times so wait untill last call 
{ 
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue]; 
} 

} 

Так вы должны вычислить высоту веб-представления.

вы можете посмотреть здесь WKWebView не имеет удаления, которые вы можете использовать, чтобы получить размер контента, а не использовать КВО:

KVO example Может быть, это поможет вам больше!

+0

Я использую WKWebView. Он не имеет scalesPageToFit свойство – Luda

+0

Но скажу, что я меняю свою реализацию на UIWebView, но есть некоторые случаи, когда webViewDidFinishLoad не вызывается, даже если контент меняется на экране – Luda

+0

webViewDidFinishLoad ?? вы уверены, что у вас установлен делегат – Alok

2

Что halped мне было иметь малую начальную высоту WKWebView

webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, 150), configuration: configuration) 

вместо

webView = WKWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), configuration: configuration) 
Смежные вопросы