2016-07-26 160 views
0

我正在嘗試自定義視差標題的擴展。但是,這並不完美。表頭視圖總是浮動並重疊單元格。Swift - 視差標題視圖 - 滾動視圖重疊單元

enter image description here

擴展代碼:

extension UITableView { 

    func addImageHeaderView(headerView headerView: UIView, height: CGFloat) { 
    self.contentInset = UIEdgeInsetsMake(height, 0, 0, 0) 
    self.contentOffset = CGPoint(x: 0, y: -height) 
    self.tableHeaderView = headerView 
    self.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: self.bounds.width, height: height) 
    } 

    func updateHeaderView(height kTableHeaderHeight: CGFloat) { 

    var headerRect = CGRect(x: 0, y: -kTableHeaderHeight , width: self.bounds.width, height: kTableHeaderHeight) 
    if self.contentOffset.y < -kTableHeaderHeight { 
     headerRect.origin.y = self.contentOffset.y 
     headerRect.size.height = -self.contentOffset.y 
    } 
    self.tableHeaderView?.frame = headerRect 
    } 

} 

實現代碼:

tableView.addImageHeaderView(headerView: viewHeader, height: 100) 

func scrollViewDidScroll(scrollView: UIScrollView) { 
     tableView.updateHeaderView(height: 200) 
    } 

我錯了的東西?如果你知道,請告訴我。

回答

0

可否請您嘗試viewDidLoad中

self.edgesForExtendedLayout = UIEdgeInsetsZero; 

設置下的在迅速

self.edgesForExtendedLayout = .None 

而且你可以嘗試做的是檢查以下

結果
tableView.addImageHeaderView(headerView: viewHeader, height: 0) 

func scrollViewDidScroll(scrollView: UIScrollView) { 
     tableView.updateHeaderView(height: 200) 
    } 

請注意,我改變了高度從100到 我這樣做是因爲高度值會改變你的表視圖的contentInset而這正是從右上角

+0

無法指定類型的值的距離「UIEdgeInsets爲鍵入「UIRectEdge」。有這個錯誤。 –

+0

對不起..你正在使用迅捷:)我更新了答案.. –

+0

謝謝!我發現它,但沒有效果。 :| –