使用 UICollectionViewDelegateFlowLayout 后约束未更新

Posted

技术标签:

【中文标题】使用 UICollectionViewDelegateFlowLayout 后约束未更新【英文标题】:Constraint not updated after using UICollectionViewDelegateFlowLayout 【发布时间】:2019-02-14 08:44:06 【问题描述】:

我正在使用UICollectionViewDelegateFlowLayout 来制作collectionViewCell 的大小和高度,但是当我使用这个时,cell 中的约束不会更新。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    return CGSize(width: UIScreen.main.bounds.width - 30, height: self.height)

因此,委托方法设置了正确的大小,但单元格中的元素被剪切(未更新)。我的单元格约束在情节提要中设置。

【问题讨论】:

您可以添加您的自动布局代码或显示故事板/xib 屏幕布局 @SuhitPatil 我不能,但我的约束设置为前导/尾随/顶部。并且与 contentView 的高度成正比。 您可以使用自行调整大小的单元格来为集合视图单元格使用动态高度***.com/questions/44187881/… 【参考方案1】:

没有太多细节,我猜你可能需要:

viewWillLayoutSubviews()

调用以通知视图控制器其视图即将布局其子视图。

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621437-viewwilllayoutsubviews

layoutSubviews()

https://developer.apple.com/documentation/uikit/uiview/1622482-layoutsubviews

【讨论】:

在哪里打电话layoutSubviews()?原因 collectionView 中不存在 beginUpdate

以上是关于使用 UICollectionViewDelegateFlowLayout 后约束未更新的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)