2016-07-26 155 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

谢谢!我发现它,但没有效果。 :| –