如何使 TableView 在 ScrollView 内滚动时表现自然

How to Make TableView scroll inside ScrollView behave naturally

我需要做这个应用程序。视图层次结构是这样的

UIScrollView
-UIView (Main View)
--UIView (Top View Container)
--UITableview

向上滚动主视图时,如果 table 视图有很多单元格,则 table 视图应该移到顶部,一旦到达顶部。用户应该能够滚动 table 视图单元格。我能够实现它,但它不会自然滚动。

附上我的代码https://github.com/iamshimak/FinchHomeScreenRedesign.git

首先,永远不要将 tableview 放在 scrollview 中,这是一种不好的做法。您可以只使用 tableview header 并在 tableview 单元格之前嵌入任何类型的视图。

这里有一个关于我如何处理它的截图:

//MARK: ConfigureTableView
    private func configureTableView(){
        let footerView = UIView()
        footerView.frame.size.height = 50
        footerView.backgroundColor = .white
        self.tableView.tableFooterView = footerView
        self.tableView.tableHeaderView = self.headerView
        var newFrame = headerView.frame

        newFrame.size.width = view.bounds.width
        newFrame.size.height = 300
        headerView.frame = newFrame
        
        tableView.backgroundView = UIView()
        tableView.backgroundView?.addSubview(backgroundTableView)
    }

如您所见,我嵌入了一个 UIView 作为页脚,另一个名为 headerView 的 UIView 作为 header

但是如果您坚持在滚动视图中使用表格视图,您可以尝试使用滚动视图委托和 detech 滚动视图正在滚动


func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let yOffset = scrollView.contentOffset.y
    
    if scrollView == self.scrollView {
        if yOffset >= scrollViewContentHeight - screenHeight {
           // logic when using scrollview
        }
    }
    
    if scrollView == self.tableView {
        if yOffset <= 0 {
            // logic when using tableview scrollView
        }
    }

}