0

我需要更改我的收藏视图(即 a )的frame顶部内容插图 ( )。顶部 inset 和 frame 的变化取决于 superview 的边界和 collection view 的内容偏移量,因此我将 inset 更改代码放在.contentInset.topUICollectionViewlayoutSubviews()

override func layoutSubviews() {
  super.layoutSubviews()

  collectionView.collectionViewLayout.invalidateLayout()
  collectionView.contentInset.top = new_inset_top
  collectionView.frame = new_frame
}

但是,集合视图不考虑新插图,并且日志显示以下内容:

未定义 UICollectionViewFlowLayout 的行为,因为:项目高度必须小于 UICollectionView 的高度减去部分插入顶部和底部值,减去内容插入顶部和底部值。

如何解决此问题以使集合视图正确显示?

我正在使用 IGListKit

4

1 回答 1

0

你不需要在layoutSubviews.

viewDidLoad实施它如下

func viewDidLoad() {
    super.viewDidLoad()

    // let say you want 40px top inset
    collectionView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0)
}

另一件事是,我不明白,你为什么要设置框架layoutSubviews。无需设置frame即可更改contentInset

于 2019-02-20T03:54:48.520 回答