我有一个UICollectionViewCell,它有一些多行标签。单元格在笔尖内定义。我想将单元格布局在彼此之下(如UITableView),左右边距。
要计算单元格的高度,我在sizeForItemAtIndexPath中执行以下步骤:
高度计算似乎总是略微偏离。在进一步检查之后(在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。
任何人都知道是否有可能以某种方式禁用IB隐式创建宽度约束?或者是否有更好的方法来实现灵活的高度,固定左和右;右边距布局?
本文建议将集合视图的大小保持为默认值(10x10),但这只适用于非常简单的UI,并且使用界面构建器来查看设计有点没有实际意义:
http://corsarus.com/2015/collection-view-with-self-sizing-cells/
答案 0 :(得分:1)
您需要为单元格中的每个标签设置Content Hugging priority和Content Compression Resistance优先级(垂直),或为某些标签声明一些高度限制