我需要更改集合视图(即frame
)的contentInset.top
和最重要的内容插图(UICollectionView
)。顶部插图和帧的更改取决于超级视图的范围和集合视图的内容偏移,因此我将插图更改代码放在layoutSubviews()
中。
override func layoutSubviews() {
super.layoutSubviews()
collectionView.collectionViewLayout.invalidateLayout()
collectionView.contentInset.top = new_inset_top
collectionView.frame = new_frame
}
但是,收集视图未考虑新的插入,日志显示以下内容:
未定义UICollectionViewFlowLayout的行为,因为: 项目高度必须小于UICollectionView的高度 减去该部分可插入顶部和底部的值,减去内容 插入顶部和底部值。
如何解决此问题以使收藏夹视图正确显示?
我正在使用IGListKit
答案 0 :(得分:0)
您不需要在layoutSubviews
内完成所有这些操作。
viewDidLoad
中实现如下操作
func viewDidLoad() {
super.viewDidLoad()
// let say you want 40px top inset
collectionView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0)
}
另一件事是,我不明白,为什么要在layoutSubviews
中设置框架。无需设置frame
即可更改contentInset
。