我想将tableView放在滚动视图内的pageviewcontroller内。
所以我在故事板中:
像这样尊重所有约束
我禁用了tableview滚动,但是我的滚动不滚动, TestVC1 中的tableView没有展开 TestVC
PagerPlace >如何使滚动视图滚动,其内容大小取决于表格视图高度+红色视图?
编辑
我尝试了您的解决方案,然后得到了一个演示图板,如下所示: storyboard
然后我的滚动视图不滚动,我也不知道为什么,
答案 0 :(得分:0)
为了让你的效果完美。
Scroll View -> UIPageViewController's view -> UITableView
Scroll View 有一个 UIPageViewController 的视图的子视图,
<块引用>UIPageViewController 有很多页面,一个页面(一个控制器的视图)有一个 UITableView 的子视图
是的。您可以更改解决方案。
mainScrollView ( vertical slide ) -> contentScrollView ( horizontal slide ) -> contentStackView ( has many pages) -> UITableView ( one page )
mainScrollView 是 UIScrollView,垂直滑动,
contentScrollView 是 UIScrollView,水平滑动
contentScrollView.isPagingEnabled = true
模拟UIPageViewController
contentStackView 有很多页,一页是你的 UITableView
让它像这样工作:
<块引用>如何让我的 scrollview 滚动,其内容大小取决于 tableview 高度 + 我的 red view?
UITableView 上面的部分
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView == mainScrollView {
// vertical
let offsetY = scrollView.contentOffset.y
if offsetY >= sillValue {
scrollView.contentOffset = CGPoint(x: 0, y: sillValue)
currentChildScrollView?.am_isCanScroll = true
scrollView.am_isCanScroll = false
} else {
let negScroll = (scrollView.am_isCanScroll == false)
if negScroll{
scrollView.contentOffset = CGPoint(x: 0, y: sillValue)
}
}
}
}
对于 UITableView 部分
使用 KVO 控制基本滚动视图的偏移量 Y ,
UITableView 的偏移量 Y 是默认的。
let keyValueObservation = currentChildScrollView?.observe(\.contentOffset, options: [.new, .old], changeHandler: { [weak self] (scrollView, change) in
guard let self = self, change.newValue != change.oldValue else {
return
}
self.childScrollView(didScroll: scrollView)
})
internal func childScrollView(didScroll scrollView: UIScrollView){
let scrollOffset = scrollView.am_originOffset.val
let offsetY = scrollView.contentOffset.y
if scrollView.am_isCanScroll == false {
scrollView.contentOffset = scrollOffset
}
else if offsetY <= scrollOffset.y {
scrollView.contentOffset = scrollOffset
scrollView.am_isCanScroll = false
mainScrollView.am_isCanScroll = true
}
}