使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)