带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度
Posted
技术标签:
【中文标题】带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度【英文标题】:UIcollectioncell with UICollectionViewDelegateFlowLayout does not apply height and width after adding constraint 【发布时间】:2020-06-25 14:33:55 【问题描述】:我尝试使用 UICollectionView 将三个项目连续放置
extension DemoController : UICollectionViewDelegateFlowLayout
//1
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize
//2
let paddingSpace = sectionInsets.left * (itemsPerRow + 1)
let availableWidth = view.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
//3
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets
return sectionInsets
// 4
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat
return sectionInsets.left
如果单元格是空的,或者我在里面放一个视图并且只在顶部或左侧添加约束,就像 我得到像
但是,如果我在右侧和底部添加约束,单元格的高度和宽度将不再起作用。
我哪里做错了?谢谢
【问题讨论】:
【参考方案1】:从我附加的图片中可以看出,您必须将集合视图的 Estimated Size 设置为无,以便集合视图根据集合计算您的大小查看您定义的 FlowLayout,否则它将根据您的 UILabel 的大小计算集合视图的大小。
【讨论】:
【参考方案2】:UILabel
具有自动调整大小的属性,即,它采用其内容的大小。因此,如果您尝试为所有四个方面提供约束,最好在约束中为 leading
和 top
和 lessThanOrEqualTo
提供约束之间的关系 trailing
和 bottom
故事板上的属性。举个例子:
【讨论】:
感谢您的回答。绝对与我的问题无关,但我仍然尝试了您的解决方案,但它不起作用。以上是关于带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章
如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片
CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?
带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢