如何使 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
}
}
}
我需要做这个应用程序。视图层次结构是这样的
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
}
}
}