gpt4 book ai didi

ios - 使用动态高度计算 collectionViewCell 的高度

转载 作者:行者123 更新时间:2023-11-29 00:56:39 24 4
gpt4 key购买 nike

我有一个 UICollectionViewCell,它有一些多行标签。单元格定义在 Nib 内。我想将单元格布局在彼此下方(如 UITableView),并左右留有边距。

enter image description here

要计算单元格的高度,我在 sizeForItemAtIndexPath 中执行以下步骤:

  1. 实例化原型(prototype)单元
  2. 创建并添加具有所需宽度(collectionView 宽度减去左右内边距)的临时宽度约束
  3. 使用 future 的内容配置单元格
  4. 调用systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)获取所需的高度

不过,高度计算似乎总是略有偏差。经过进一步检查(在 systemLayoutSizeFittingSize 之前调用layoutIfNeeded),单元格似乎已经具有宽度约束,即设置为 IB 中布局的宽度。

(
"<NSAutoresizingMaskLayoutConstraint:0x7f91baf48be0 h=--& v=--& H:[UIView:0x7f91bacb7440(304)]>",
"<NSLayoutConstraint:0x7f91bacb7f00 H:[UIView:0x7f91bacb7d90(359)]>",
"<NSLayoutConstraint:0x7f91ba970730 H:[UIView:0x7f91bacb7d90]-(0)-| (Names: '|':UIView:0x7f91bacb7440 )>",
"<NSLayoutConstraint:0x7f91ba970780 H:|-(0)-[UIView:0x7f91bacb7d90] (Names: '|':UIView:0x7f91bacb7440 )>"
)

在设计时,单元的布局宽度为 304pt。在本例中,所需的单元格宽度为 359pt。

enter image description here

有人知道是否可以以某种方式禁用 IB 隐式创建宽度约束吗?或者有没有更好的方法来实现灵活的高度、固定的左右边距布局?

本文建议将 Collection View 的大小保留为默认值 (10x10),但这仅适用于非常简单的 UI,并且使得使用界面生成器来查看设计有点无意义:

http://corsarus.com/2015/collection-view-with-self-sizing-cells/

最佳答案

您需要为单元格中的每个标签(垂直)设置 Content Hugging 优先级和 Content Compression Resistance 优先级,或者为某些标签声明一些高度限制

关于ios - 使用动态高度计算 collectionViewCell 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com