拡大表示後にUIWebView
スクロールビューの高さに合わせてテーブルビューセルの高さを更新しようとしています。UIWebView
はテーブルビューセルのサブビューです。親コントローラでズーム時にUITableViewCellの制約がUIWebView scrollViewで正しく更新されない
func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
DispatchQueue.main.async {
print("\nscrollViewDidEndZooming")
print("webView.scrollView.contentSize.height: \(self.webView.scrollView.contentSize.height)")
print("webViewHeightConstraint: \(self.webViewHeightConstraint.constant)")
let height = self.webView.scrollView.contentSize.height
self.webViewHeightConstraint.constant = height
myDelegate.reloadTableView()
}
}
上
:
func reloadTableView() {
tableView.beginUpdates()
tableView.endUpdates()
}
のWebViewにロードされたHTMLコンテンツがあります。問題は、didEndZooming
が呼び出され、高さ制約が更新された後、正しく設定されていないことです。高さの制約はサイズまで大きくなります。 tableViewセルに高さの制約を設定すると、どうにかしてフィードバックループが作成されるように思えます。
私はどのようにこの作品を期待できますか? (それはscrollviewが無限サイズが大きくなくても、ズーム値にリサイズする必要があります。)
更新:
でfunc tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: WebViewCell.description(), for: indexPath) as! WebViewCell
//The cell delegate implements the didFinishLoad() function
cell.delegate = self
//TODO: I know this is not efficient, will update later.
if let html = viewModel.emailInfo?.htmlContent {
cell.loadHTMLString(html)
}
return cell
}
を細胞自体がXIBファイルです。私は今、ダミービューの中にビューを置く(この問題が修正されているかどうかを確認しようとしている)(ウェブビューには上下左右の辺に制約がある)制約。それは私が、セルの高さを決定するために使用しようとしていますことを、この高さの制約、webViewHeightConstraint
です。
これは内とズームアウトの数サイクル後にログ出力されます。これは、
scrollViewDidEndZooming webView.scrollView.contentSize.height:962.0新しい高さ制約が設定される前に印刷されましたwebViewHeightConstraint:509.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:962.0 webViewHeightConstraint:962.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:1531.0 webViewHeightConstraint:962.0
scrollViewDidEndZooming webView.scrollView.contentSize 。高さ:1549.0 webViewHeightConstraint:1531.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:2566.0 webViewHeightConstraint:1549.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:2566.0 webViewHeightConstraint:2566.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:4779.0 webViewHeightConstraint:2566.0
scrollViewDidEndZooming webView.scrollView.contentSize 。高さ:4779.0 webViewHeightConstraint:4779.0
scrollViewDidEndZooming webView.scrollView.contentSi ze.height:109890 webViewHeightConstraint:4779.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:10989.0 webViewHeightConstraint:10989.0
scrollViewDidEndZooming webView.scrollView.contentSize.height:25110.0 webViewHeightConstraint:10989.0
scrollViewDidEndZooming webView.scrollView。 contentSize.height:25110.0 webViewHeightConstraint:25110.0
'tableView(_:cellForRowAt:)'メソッドの中に、 'tableViewCell'の見た目と' webViewHeightConstraint'のコードを追加してください。デバッグレポを持つことができれば、簡単に手助けすることができます。 – trungduc
あなたに役立つ情報を掲載する必要があります。どのような制約がセルに設定されているか、あなたが何を期待しているのか、どのようなものが得られているのかなどの例です。 'フィードバックループ'を確認するにはscrollViewDidEndZoomingにいくつかのログを記録して、回。私はまた、それが設定しようとしている実際の高さを確認することをお勧めします。最後に、UIWebViewは現在廃止予定ですので、WKWebViewを調べることをお勧めします。 –
ありがとう、私はいくつかの理由でUIWebViewを選択しました。しかし、もう一度WKWebViewを見ていきます。 – scord