要做到這一點是使用一個表視圖的最簡單方法。您的粘性標題是表格的第一個部分標題,而滾動部分是第二部分。
如果你不能使用表格,無論出於何種原因,那麼你必須弄清楚滾動視圖的內容偏移量。當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
}
}
請注意,我的代碼向上移動標題以隱藏它。據我瞭解,你只需要改變標題的高度(以相同的量向上移動)。
你有沒有想過這個? – shoe