【问题标题】:Change tableview header height inside a collection更改集合内的 tableview 标题高度
【发布时间】:2020-03-16 05:53:27
【问题描述】:

如何在UICollectionView 中动态设置UITableView 的标头大小。我之前使用此代码在 UIViewController 中使 UITableView 标头动态化

 override func viewDidLayoutSubviews() {
       super.viewDidLayoutSubviews()
       sizeHeaderToFit()
   }

   func sizeHeaderToFit() {
       let headerView = questionTableView.tableHeaderView!

       headerView.setNeedsLayout()
       headerView.layoutIfNeeded()

       let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
       var frame = headerView.frame
       frame.size.height = height
       headerView.frame = frame

       questionTableView.tableHeaderView = headerView
   }

但不能在UICollectionViewCell 类中使用此代码。它说“UICollectionViewCell”没有成员viewDidLayoutSubviews

那么我怎样才能在collectionView中制作tableView的动态标题高度。我在故事板的UITableView 中将UIView 拖到顶部(用于标题视图)

【问题讨论】:

  • 您不能在UICollectionViewCell 中使用viewDidLayoutSubviews,因为它是UIViewController 的一部分。
  • 我怎样才能为嵌入在 UICollectionView @PALAKMobileTeamLeader 中的 UItableView 做类似的功能
  • 您是否尝试在 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView 的帮助下制作标题视图?{}
  • 是的,它会在 uitableview 中创建其他视图?例如:Storyboard 中的标题视图,此委托的标题视图高度,然后显示单元格
  • 如果你分享更多的表格视图代码会更好,这样我可以更好地帮助你。

标签: ios swift uitableview uicollectionview


【解决方案1】:

最重要的信息是您需要在 UICollectionViewCell.swift 文件中调用 UITableViewController 的所有委托和数据源方法。

  var intDynamicHeight = CGFloat()

  func sizeHeaderToFit() -> CGFloat
  {
   let headerView = questionTableView.tableHeaderView!

   //headerView.setNeedsLayout()
   //headerView.layoutIfNeeded()

   let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height

   self.intDynamicHeight = height
  // var frame = headerView.frame
  // frame.size.height = height
  // headerView.frame = frame

  // questionTableView.tableHeaderView = headerView

  return height
}


  func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
{
    return self.sizeHeaderToFit()
}


func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
        let headerView = questionTableView.tableHeaderView!
        let viewNewIN = UIView.init(frame: CGRect(x: 0, y: 0, width: <Your desire Width>, height: self.intDynamicHeight))
        headerView.isHidden = false
       var frame = headerView.frame
       frame.size.height = height
       headerView.frame = frame

       viewNewIN.addSubview(headerView)

       return viewNewIN
}

并在初始阶段隐藏您的标题视图,而不是在viewForHeaderInSection 方法中显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多