Rumah > Soal Jawab > teks badan
Seperti yang ditunjukkan dalam gambar:
Bahagian kotak merah ialah WKWebView, yang sebelah kiri ialah paparan biasa, dan yang sebelah kanan ialah paparan tidak normal.
Saya melaksanakan paparan web kandungan yang sangat adaptif dalam panggilan balik penyiapan pemuatan halaman web:
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
if ([webView isFinishLoading] == YES) {
self.webView.height = self.webView.scrollView.contentSize.height;
Ketinggian yang diperoleh di bahagian kiri dan kanan adalah sama, tetapi bahagian kanan tidak dipaparkan sepenuhnya dan juga dibesarkan.
Apa yang paling mengelirukan saya ialah kadangkala loading sudah lengkap dan kadangkala tidak lengkap.
Apa yang membuatkan saya lebih keliru ialah jika saya menulis beban malas untuk menangguhkannya selama satu saat, paparan pada masa ini akan betul semula:
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
if ([webView isFinishLoading] == YES) {
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 1秒后异步执行这里的代码...
weakSelf.webView.height = weakSelf.webView.scrollView.contentSize.height;
Jika saya menggunakan UIWebView dan bukannya WKWebView, saya tidak akan menghadapi masalah ini.
Boleh sesiapa beritahu saya mengapa halaman itu kadang-kadang tidak dipaparkan sepenuhnya? . . Terima kasih terlebih dahulu
代言2017-07-06 10:37:34
Saya juga pernah menghadapi situasi ini Sesekali, kandungan halaman tidak dipaparkan sepenuhnya Kemudian saya mendapati bahawa nilai didFinishNavigation
有时候会调用多次, 而第一次的时候webView.scrollView.contentSize
打印为(width = 0, height =0). 所以在isFinishLoading
后, 直接设置webView.height
就会出现内容不全.
解决:
判断webView.scrollView.contentSize.height
为非0, 再设置webView.height
; 或者用KVO
监听webView.scrollView.contentSize
ini adalah OK
Ketinggian hakim
if (!self.webView.isLoading) {
if(webView.scrollView.contentSize.height > 0)
{
self.webView.height = self.webView.scrollView.contentSize.height;
[self.webView sizeToFit];
}
}
KVO memantau Saiz kandungan
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (!self.webView.isLoading) {
if([keyPath isEqualToString:@"scrollView.contentSize"])
{
webView.height = webView.scrollView.contentSize.height;
[webView sizeToFit];
}
}
}