我知道粘贴标题不是一个新问题,但仍然......
我正在尝试创建一个粘性标题(UIImageView)和滚动部分(UIScrollView中包含UIStackView)
我正在使用scrollViewDidScroll
中的UIScrolLViewDelegate
方法。唯一的问题是,当我向上滚动视图时,我不仅降低了标题视图的高度,还滚动了堆栈视图的内容。因此,当我向上滚动时,您仍然可以看到标题视图,但滚动视图的顶部内容会通过滚动消失。
这可以通过某种方式解决,当我向上滚动时,堆栈视图的内容是向上滚动而不是也消失了?当标题视图消失时开始消失?
谢谢
答案 0 :(得分:0)
最简单的方法是使用表格视图。您的粘性标题是表格的第一部分标题,而滚动部分是第二部分。
如果由于某种原因无法使用表格,则必须使用滚动视图的内容偏移量。当contentOffset.y
增长(但不超过标题的高度)时,将其重置为0并相应地降低标题的高度。在标题的高度为0之后,停止弄乱contentOffset
- 直到你回来并且contentOffset.y
想要进入底片。
P.S。第二个解决方案要求您在滚动视图上启用弹跳。否则,标题将被隐藏,但不会再次显示(除非您重置控制器)
L.E。我的第二个解决方案的一些(旧)代码:
let headerHeight = self.headerView.height
self.scrollHandler = {
var offset = self.detailsTable.contentOffset
self.headerTopConstraint.constant -= offset.y
if self.headerTopConstraint.constant < -headerHeight {
self.headerTopConstraint.constant = -headerHeight
let size = self.detailsTable.contentSize
if offset.y + self.detailsTable.frame.height > size.height {
offset.y = size.height - self.detailsTable.frame.height
}
self.detailsTable.contentOffset = offset
}
else {
if self.headerTopConstraint.constant > 0 {
self.headerTopConstraint.constant = 0
}
self.detailsTable.contentOffset = CGPointZero
}
}
请注意我的代码向上移动标题以隐藏它。据我所知,你只需改变标题的高度(向上移动它的数量相同)。