更改集合内的 tableview 标题高度
Posted
技术标签:
【中文标题】更改集合内的 tableview 标题高度【英文标题】:Change tableview header height inside a collection 【发布时间】: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 中的标题视图,此委托的标题视图高度,然后显示单元格
如果你分享更多的表格视图代码会更好,这样我可以更好地帮助你。
【参考方案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
方法中显示。
【讨论】:
以上是关于更改集合内的 tableview 标题高度的主要内容,如果未能解决你的问题,请参考以下文章
具有动态高度的tableview(每个部分)内的奇怪挑战UIScrollView
UITableViewCell内的UICollectionView如何根据屏幕大小调整tableview单元格高度