공지사항 화면을 개발하면서 API를 통해 데이터를 받을때 HTML태그를 받아와야할때가 있었다.
Swift를 이용해서 HTML태그를 보여줘야할때 가장 많이 사용하는 방법 중 하나가 WKWebView를 이용하는것이였고 이를 사용하였다
viewModel.noticeDetailModel
.drive(with: self) { owner, model in
owner.titleLabel.text = model.title
owner.writerInfoLabel.text = model.writerInfo
owner.webView.loadHTMLString(model.content, baseURL: nil)
}
.disposed(by: disposeBag)
일부 화면은 HTML태그로 이루어진 페이지가 디바이스 비율에 맞춰지는게 아니라 상대적으로 뒤죽박죽인 경우가 많았다.
만약 HTML태그 웹 페이지가 디바이스 크기에 따라서 정보를 잘 전달하지못한 경우가 있을꺼같아서 이 부분을 개선시켜야할 필요가 있다.
"<header><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no'></header>"
[성서알리미] 앱 디자인 상으로 WKWebView만 스크롤하는것이 아닌 공지사항 전체 화면이 함께 스크롤되며 자연스럽게 보임을 유도한다
위와 같은 이유로 스크롤 뷰 컨테이너를 만들어 넣어주려했으나 의도했던것과는 다르게 전체 UI를 한번에 덮기힘들었다
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.readyState") { complete, error in
if complete != nil {
webView.evaluateJavaScript("document.body.scrollHeight") { height, error in
self.webView.snp.updateConstraints {
$0.height.equalTo(height as! CGFloat)
}
}
}
}
}