我正在使用分页滚动视图,将不同的Web视图显示为页面。滚动视图已设置clipsToBounds = false
以允许在滚动视图中显示上一页和后一页。
滚动页面时,有一个确切的时刻,WKWebViews内容变得完全不可见。这恰好发生在Web视图离开滚动视图边界的那一刻(见下文)。在某些网站上,界限内的可见内容与实际内容不同。
只有在使用WKWebView而不是UIWebView时才会出现这些问题(一切都按照预期的方式与UIWebView一起使用)。
是否有人遇到与WKWebView类似的问题,并为他们提供解决方案?
编辑: Github上现在有一个示例项目,您可以在其中体验错误并使用它: WKWebView test project
答案 0 :(得分:1)
要想出来,我认为你需要使用UICollectionView。 单元格应该与WKWebView一起存在,而它将在屏幕上。
1)您需要将其放置为Here
接下来的问题是将内容翻页。 2)要做得对,您需要在集合中添加UIScrollView,如Here
3)之后,使您的UIScrollView页面化并在viewdidload中写入:
collectionView.addGestureRecognizer(scrollView.panGestureRecognizer)
4)收到UICOllectionView中显示的模型后 - 更新你的UIScrollView的contentSize
scrollView.contentSize = CGSize(width: (models.count*(cellWidth+cellIndent) + sectionIndent * 2), height: cellHeight)
5)实施UIScrollViewDelegate
extension YourVC: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView == self.scrollView {
collectionView.contentOffset = scrollView.contentOffset
} else if scrollView == self.collectionView {
self.scrollView.contentOffset = scrollView.contentOffset
}
}
}
多数民众赞成。快乐编码=)
答案 1 :(得分:0)
WKWebView的设计性能比UIWebView更高。如果它不在视图层次结构的顶部,它将停止运行网页的某些部分或完全停止渲染。这里的问题是,一旦网页超出了scrollview的范围,WKWebView就不会认为自己在屏幕上,即使它因设置clipsToBounds = false
而可见。
最简单的方法是使用UIWebView。如果由于某种原因您需要WebKit,请考虑调整您的分页代码,以便您的scrollview跨越整个视图控制器。