Skip to content

Instantly share code, notes, and snippets.

View meyusufdemirci's full-sized avatar

Yusuf Demirci meyusufdemirci

View GitHub Profile
navigationView.frame = CGRect(x: 0, y: 0, width: headerView.frame.width, height: headerView.frame.height)
navigationView.backgroundColor = .green
navigationView.alpha = 0
table.stickyHeader.view = navigationView
let headerView = Bundle.main.loadNibNamed("MyHeaderView", owner: nil, options: nil)?.first as! MyHeaderView
tableview.stickyHeader.view = headerView
tableview.stickyHeader.height = headerView.frame.height
tableview.stickyHeader.minimumHeight = 64
internal class StickyHeaderView: UIView {
weak var parent: StickyHeader?
internal static var KVOContext = 0
override func willMove(toSuperview view: UIView?) {
if let view = self.superview, view.isKind(of:UIScrollView.self), let parent = self.parent {
view.removeObserver(parent, forKeyPath: "contentOffset", context: &StickyHeaderView.KVOContext)
}
}
public class StickyHeader: NSObject {
/**
The view containing the provided header.
*/
private(set) lazy var contentView: StickyHeaderView = {
let view = StickyHeaderView()
view.parent = self
view.clipsToBounds = true
return view
private var xoStickyHeaderKey: UInt8 = 0
extension UIScrollView {
public var stickyHeader: StickyHeader! {
get {
var header = objc_getAssociatedObject(self, &xoStickyHeaderKey) as? StickyHeader
if header == nil {
header = StickyHeader()