Stretchy Headers

Design Teardowns笔记:

Stretchy Headers_第1张图片
Paste_Image.png

最终效果是这样。下拉headerView被拉伸。

sh-preview.gif

这里给出比较重要的部分:

var headerView: UIView!
let HeaderViewHeight = CGFloat(300)
override func viewDidLoad() {
    super.viewDidLoad()
    headerView = tableView.tableHeaderView
    tableView.tableHeaderView = nil
    tableView.addSubview(headerView)
    tableView.contentInset = UIEdgeInsetsMake(HeaderViewHeight, 0, 0, 0)
    updateHeaderView()
}

func updateHeaderView() {
    var frame = CGRectMake(0, -HeaderViewHeight, tableView.frame.width, HeaderViewHeight)
    let offsetY = tableView.contentOffset.y
    if offsetY < -HeaderViewHeight {
        frame.origin.y = offsetY
        frame.size.height = -offsetY
    }
    
    headerView.frame = frame
}

override func scrollViewDidScroll(scrollView: UIScrollView) {
    updateHeaderView()
}·

你可能感兴趣的:(Stretchy Headers)