Ios 敏捷的如何滚动滚动视图(TableView),首先将其移动到全屏,然后滚动内容本身
我注意到在一些应用程序中滚动的有趣行为。例如,在Viber应用程序中,顶部的“更多”菜单中有某种标题视图,在我看来,下面是一个uitableview表。向下滚动时,顶部标题首先隐藏,表格与全屏对齐,然后内容才会在其中滚动:Ios 敏捷的如何滚动滚动视图(TableView),首先将其移动到全屏,然后滚动内容本身,ios,swift,uitableview,uiscrollview,Ios,Swift,Uitableview,Uiscrollview,我注意到在一些应用程序中滚动的有趣行为。例如,在Viber应用程序中,顶部的“更多”菜单中有某种标题视图,在我看来,下面是一个uitableview表。向下滚动时,顶部标题首先隐藏,表格与全屏对齐,然后内容才会在其中滚动: 此外,此滚动会随着滚动而平滑进行,即使您用手指轻轻滑动并松开它,滚动也会以相同的惯性继续移动,并平滑地隐藏上标题视图,然后滚动表格本身。如何达到同样的效果 我尝试使用scrollViewDidScroll执行相同的操作,但结果只执行以下操作: @IBOutlet
此外,此滚动会随着滚动而平滑进行,即使您用手指轻轻滑动并松开它,滚动也会以相同的惯性继续移动,并平滑地隐藏上标题视图,然后滚动表格本身。如何达到同样的效果 我尝试使用
scrollViewDidScroll
执行相同的操作,但结果只执行以下操作:
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableViewTopAnchor: NSLayoutConstraint!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let y = scrollView.contentOffset.y
if y <= headerViewHeight && y >= 0 {
tableViewTopAnchor.constant = -y
} else if tableViewTopAnchor.constant != -headerViewHeight && y > headerViewHeight {
tableViewTopAnchor.constant = -headerViewHeight
}
}
let headerViewHeight: CGFloat = 150
在滚动开始时,表格本身会滚动,同时,标题视图也会隐藏,并获得更高的滚动速度。也许你可以这样做,使表中的滚动开始,但其中的内容实际上保留在一个地方。另外,当tableview滚动到最顶端时,如果你再进一步滚动它,那么我希望它自己移动,而不是其中的内容
我的代码如下:
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableViewTopAnchor: NSLayoutConstraint!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let y = scrollView.contentOffset.y
if y <= headerViewHeight && y >= 0 {
tableViewTopAnchor.constant = -y
} else if tableViewTopAnchor.constant != -headerViewHeight && y > headerViewHeight {
tableViewTopAnchor.constant = -headerViewHeight
}
}
let headerViewHeight: CGFloat = 150
@ibvar-tableView:UITableView!
@IBVar tableViewTopAnchor:NSLayoutConstraint!
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回30
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
let cell=UITableViewCell()
cell.textlab?.text=“\(indexPath.row)”
返回单元
}
func scrollViewDidScroll(scrollView:UIScrollView){
设y=scrollView.contentOffset.y
如果y=0{
tableViewTopAnchor.constant=-y
}否则如果tableViewTopAnchor.constant!=-headerViewHeight&&y>headerViewHeight{
tableViewTopAnchor.constant=-headerViewHeight
}
}
让headerViewHeight:CGFloat=150
故事板:
我尝试使用scrollView.contentOffset.y=0
停止在scrollViewDidScroll
中滚动表格中的内容,但是滚动通常会停止工作(
我很抱歉,如果这样的问题已经存在,但我找不到完全相同的。我希望有一个链接和/或示例
提前感谢您的帮助:)将为您提供大部分帮助。会让你一路走到那里。