LeadKit/TIUIElements/Sources/Helpers/TableViewHeaderTransitionin...

35 lines
1.1 KiB
Swift

import UIKit
final class TableViewHeaderTransitioningHandler: NSObject, TransitioningHandler {
var animator: CollapsibleViewsAnimator?
private var startOffset: CGFloat = 0
private var navigationBarOffset: CGFloat = 0
private var isFirstScroll = true
private var container: CollapsibleViewsContainer?
init(collapsibleViewsContainer: CollapsibleViewsContainer) {
self.container = collapsibleViewsContainer
}
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard let largeHeaderView = container?.bottomHeaderView else {
return
}
if isFirstScroll {
startOffset = max(-(scrollView.contentOffset.y), 0)
navigationBarOffset = container?.fixedTopOffet ?? 0
isFirstScroll = false
}
let offsetY = scrollView.contentOffset.y + startOffset
let alpha = min(offsetY / (largeHeaderView.frame.height + navigationBarOffset), 1)
animator?.fractionComplete = alpha
animator?.currentContentOffset = scrollView.contentOffset
}
}