전체보기를 스크롤하는 요구 사항이 있으며 customView 및 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()
}
나는 웹보기의 높이를 얻는 방법에 대한 몇 가지 문서를 읽을했다, 그것은 다음있는 ScrollView 작업을 할 수있는 webView.It의 높이를 설정 완료 웹뷰로드를 기다릴 것입니다. 그래서이 아이디어를 따르고 싶지만 다른 상황이 있습니다 :
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의 높이가 업데이트되고 스크롤된다. –