我有一个' UICollectionView'我用来通过子类化UICollectionViewFlowLayout
一次一个地水平分页很多项目。
为此,我在双方都设置了插入,并覆盖了targetContentOffsetForProposedContentOffset(: CGPoint, withScrollingVelocity: CGPoint) -> CGPoint
方法,以使项目始终位于屏幕的中心。
然后让单元格填满整个屏幕,但只是在屏幕上显示上一个和下一个单元格的提示:
|-------------------|
|-| |-----------| |-|
|x| |xxxxxxxxxxx| |x|
|x| |xxxxxxxxxxx| |x|
|x| |xxxxxxxxxxx| |x|
|x| |xxxxxxxxxxx| |x|
|x| |xxxxxxxxxxx| |x|
|-| |-----------| |-|
|-------------------|
为此,我在itemSize
上设置了prepareLayout
:
override func awakeFromNib() {
let spacingConstant: CGFloat = 16.0
self.minimumLineSpacing = spacingConstant * 2
self.sectionInset = UIEdgeInsets(top: 30, left: spacingConstant * 3, bottom: 30, right: spacingConstant * 3)
self.scrollDirection = .Horizontal
}
override func prepareLayout() {
super.prepareLayout()
if let mySize = self.collectionView?.frame {
let size = CGSize(
width: mySize.width - self.sectionInset.right - self.sectionInset.left,
height: mySize.height - self.sectionInset.top - self.sectionInset.bottom
)
self.itemSize = size
}
}
但是我一直警告说itemSize必须小于视图的高度减去插入,这正是我在这里所做的。
the behavior of the UICollectionViewFlowLayout is not defined because:
the item height must be less than the height of the UICollectionView minus the section insets top and bottom values.
完成这项工作的最佳方法是什么?
答案 0 :(得分:0)
我得到另一个警告,帮助了我,显然会帮助你:
项高度必须小于UICollectionView的高度 减去部分插入顶部和底部值,减去内容 插图顶部和底部值。
只需添加以下内容:
let size = CGSize(
width: mySize.width - self.sectionInset.right - self.sectionInset.left - self.collectionView!.contentInset.left - self.collectionView!.contentInset.right,
height: mySize.height - self.sectionInset.top - self.sectionInset.bottom - self.collectionView!.contentInset.top - self.collectionView!.contentInset.bottom
)