我有一个ViewController,它有一个tableView,并且在表视图的顶部有两个视图。当用户向上滚动时,我需要折叠视图(在图像中以红色标出),然后向上移动另一个视图(橙色按钮)。我计划使用scrollViewDidScroll委托方法来检测表的偏移量,并使用它来处理折叠。
我该如何实施?
//Custom delegate method, which returns offset of scrollViewDidScroll
func didScrollScrollView(offset: CGFloat){
print(offset)
//I have the offset, which is -30 on load. How do I implement collapsing of the view highlighted in red?
}
答案 0 :(得分:1)
您需要访问视图的框架或更好的heightConstraint。 如果你有对heightConstrain的引用,你可以这样做:
var previousOffset: CGFloat = -30
func didScrollScrollView(offset: CGFloat){
let diff = previousOffset - offset
previousOffset = offset
var newHeight = heightConstraint.constant + diff
if newHeight < 0 {
newHeight = 0
} else if newHeight > 60 { // or whatever
newHeight = 60
}
heightConstraint.constant = newHeight
}
如果您不使用Autolayout,则需要手动更新帧。
还在界面构建器或代码
中设置clipsSubviews = true(clippedToBounds)