如何制作可伸缩的标题视图集合视图[Swift]

时间:2018-12-25 15:29:21

标签: swift uicollectionview

在我的快捷应用程序中,我有一个集合视图,我想在表格视图中创建一个可拉伸的标题视图:https://medium.com/if-let-swift-programming/how-to-create-a-stretchable-tableviewheader-in-ios-ee9ed049aba3

1 个答案:

答案 0 :(得分:0)

您已经使用该文章链接自己回答了问题,除非我错过了什么。

如果有帮助,我会为您和可能有相同问题的其他人复制并粘贴,因为它甚至附带github链接(对Abhimuralidharan @ Medium表示敬意):

  

使用基本数据源和委托方法创建表视图,而简单地将某些数据加载到表中则需要这些方法。

     

设置表格视图的contentInset属性:

tableView.contentInset = UIEdgeInsetsMake(300, 0, 0, 0)
  

在这里,我将最高值设置为300,这是一个计算得出的数字,我将其设置为标题imageview的初始正常高度。现在,我们设置了contentInset,表格视图的框架将从(0,0)开始,第一个单元格将从(0,300)开始。

     

现在,创建一个高度为300的图像视图,并将其添加到表格视图上方的当前视图中。

imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 300)
imageView.image = UIImage.init(named: “poster”)
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
view.addSubview(imageView)
  

然后,在滚动视图委托方法scrollViewDidScroll中添加以下代码,该方法在每次滚动表视图时都会调用。

func scrollViewDidScroll (_ scrollView: UIScrollView) {
    let y = 300 — (scrollView.contentOffset.y + 300)
    let height = min(max(y, 60), 400)
    imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: height)
}
  

编译并运行代码。完整的源代码可在github中找到。