Jor*_*n H 9 uitableview ios autolayout uicollectionview swift
我想利用UITableViewCelliOS 8 中的动态高度新功能.我需要放置UICollectionView一个UITableViewCell.我想确保集合视图中的所有单元格都在屏幕上可见,因此表格单元格的高度应该增加以适合集合视图.我几乎有这个工作.我只是无法使表格单元格大小合适 - 它的长度太长或太短,并且在我与表格交互之前会看到一些布局问题(更多内容见下文).
我已经将集合视图的自动布局约束设置为表格的单元格contentView:前导,尾随,顶部和底部.然后我在集合视图上创建了一个高度约束,这样我就可以constant在计算适当的高度后动态更新它以适应集合视图中的所有单元格(因为我认为没有办法自动执行此操作).
这是设置的其余部分.
viewDidLoad {
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let cellDimension = self.collectionView.frame.size.width / 7 //always 7 columns
let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flowLayout.itemSize = CGSizeMake(cellDimension, cellDimension)
self.collectionViewHeightConstraint.constant = cellDimension * 4 //always 4 rows
}
Run Code Online (Sandbox Code Playgroud)
我没有实施heightForRowAtIndexPath.
此设置会导致冲突的垂直约束.我已经尝试降低约束的优先级并在一堆组合中改变关系,但没有一个导致所需的行为.如果我将高度约束的优先级降低到999,则表格视图单元格最初太高,但在我向上和向下滚动表格视图后,表格单元格高度更新为预期高度.对于其他一些组合,结果是表格单元格太短但整个集合视图渗出,表格单元格太短而集合视图被切断,或者表格单元格太高,基于什么优先级和我已经应用于约束的关系.此外,在视图设置为动画时,集合视图单元格不会以适当的大小显示(但它们会在动画完成时正确调整),或者如果我重新加载表格,则集合视图单元格的大小不正确,直到我滚动桌子.
如何解决这些外观问题以获得动态表格视图单元格高度,其中包含基于显示宽度的动态单元格大小的完全可见的集合视图?
这是我的处理方法,我认为这一切都可以在 IB 中完成。
首先,我设置 CV 单元格的最小大小,然后设置 CV 的拥抱优先级以尽可能紧密地拥抱其内容。这应该保证,除了所有外部影响之外,CV 将尝试拥有尽可能小的尺寸,使其所有单元都可见。
接下来,我将与 TBV 单元的内容视图和 CV 玩同样的游戏,也就是说,我将 TBV 单元的内容视图的拥抱优先级设置为尽可能紧密地拥抱 CV。同样,这应该强制要求,在忽略外部影响的情况下,TBV 单元应保持其所需的最小尺寸,以便完整显示 CV。
| 归档时间: |
|
| 查看次数: |
5056 次 |
| 最近记录: |