ビュー全体をスクロールする必要がありました。カスタムビューとWebViewが含まれています。画像以下のような構造体:scrollViewのwebViewはスクロールできませんか?
はしたがって、私はそれをスクロールさせるスーパーとしてscrollViewを選択してください。私はスナップキットを使用してすべてのビューをレイアウトします。私は、customViewとwebViewを持っていたscrollViewにContainViewを追加しました。以下のようなコード:
func setupScrollView() {
view.addSubview(scrollView)
scrollView.snp.makeConstraints { (make) in
make.edges.equalTo(view)
}
scrollView.addSubview(containView)
containView.snp.makeConstraints { (make) in
make.left.right.equalTo(view)
make.top.bottom.equalTo(scrollView)
}
}
func setupHeaderView() {
containView.addSubview(headerView)
headerView.snp.makeConstraints { (make) in
make.left.right.equalTo(view)
make.top.equalTo(containView)
}
}
func setupWebView() {
containView.addSubview(webView)
webView.navigationDelegate = self
webView.scrollView.bounces = false
webView.scrollView.isScrollEnabled = false
loadLocalHtml()
}
私はWebViewのの高さを取得する方法についていくつかの文書を読んでいたが、それは、その後、scrollViewの作業を行うことができますwebView.Itの高さを設定し終えたのWebViewの負荷を待っています。だから私はこのアイディアに従いたいと思っていますが、私は別の状況がありました:
1)webViewの読み込みが完了したら、ローカルhtmlを読み込む必要があります。私はサーバーからデータを取得する要求をする必要があります。
2)次に、webViewのjsメソッドを呼び出して、htmlにデータを入力します。 htmlにはイメージとテキストが含まれています。
私はそれを行う方法について考えています。だからjsメソッドの成功を呼び出すときにwebViewの高さを取得します。以下のコード:
func updateWebView(_ json: String) {
let userId = userManager.currentUserId()
webView.evaluateJavaScript("updateData(\(json),'\(userId)')") { [weak self](response, error) in
guard let strongself = self else { return }
if error == nil {
strongself.settingconstraints()
}
}
}
func settingconstraints() {
webView.snp.updateConstraints { make in
make.left.right.equalTo(view)
make.top.equalTo(headerView.snp.bottom)
make.height.equalTo(webView.scrollView.contentSize.height)
make.bottom.equalTo(containView)
}
}
しかし、それは、私は今それを解決する方法がわからない、スクロールすることができませんでしたか?助けてください。ありがとう
ええ、あなたは正しいです、最初に、私はそれをwebViewに固定する必要があります。contentSizeが変更されたことを観察すると、webViewの高さが更新され、スクロールします。 –