设置 UICollectionView 的 UIEdgeInsets
Set UICollectionView's UIEdgeInsets
我希望 UICollectionView 的项目居中,所以我编写了以下代码:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
let collectionViewWidth = collectionView.bounds.width
let collectionViewHeight = collectionView.bounds.height
let numberOfRows = CGFloat(collectionView.numberOfItemsInSection(0))
let leftValue = (collectionViewWidth / 2.0) - (numberOfRows * 5) - (numberOfRows * (collectionViewHeight / 2.0))
print(leftValue)
return UIEdgeInsets(top: 0, left: leftValue, bottom: 0, right: 0)
}
但现在的问题是我无法将其滚动到左侧,因为我的左插图发生了变化,请给我任何解决方案。
我通过一些计算得出了这个结论,所以这里是代码:
func refreshCollectionView(count: Int) {
let collectionViewHeight = collectionView.bounds.height
let collectionViewWidth = collectionView.bounds.width
let numberOfItemsThatCanInCollectionView = Int(collectionViewWidth / collectionViewHeight)
if numberOfItemsThatCanInCollectionView > count {
let totalCellWidth = collectionViewHeight * CGFloat(count)
let totalSpacingWidth: CGFloat = CGFloat(count) * (CGFloat(count) - 1)
// leftInset, rightInset are the global variables which I am passing to the below function
leftInset = (collectionViewWidth - CGFloat(totalCellWidth + totalSpacingWidth)) / 2;
rightInset = -leftInset
} else {
leftInset = 0.0
rightInset = -collectionViewHeight
}
collectionView.reloadData()
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}
更详细的代码可以看我的代码https://github.com/anirudha-music/CollectionViewCenter
我希望 UICollectionView 的项目居中,所以我编写了以下代码:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
let collectionViewWidth = collectionView.bounds.width
let collectionViewHeight = collectionView.bounds.height
let numberOfRows = CGFloat(collectionView.numberOfItemsInSection(0))
let leftValue = (collectionViewWidth / 2.0) - (numberOfRows * 5) - (numberOfRows * (collectionViewHeight / 2.0))
print(leftValue)
return UIEdgeInsets(top: 0, left: leftValue, bottom: 0, right: 0)
}
但现在的问题是我无法将其滚动到左侧,因为我的左插图发生了变化,请给我任何解决方案。
我通过一些计算得出了这个结论,所以这里是代码:
func refreshCollectionView(count: Int) {
let collectionViewHeight = collectionView.bounds.height
let collectionViewWidth = collectionView.bounds.width
let numberOfItemsThatCanInCollectionView = Int(collectionViewWidth / collectionViewHeight)
if numberOfItemsThatCanInCollectionView > count {
let totalCellWidth = collectionViewHeight * CGFloat(count)
let totalSpacingWidth: CGFloat = CGFloat(count) * (CGFloat(count) - 1)
// leftInset, rightInset are the global variables which I am passing to the below function
leftInset = (collectionViewWidth - CGFloat(totalCellWidth + totalSpacingWidth)) / 2;
rightInset = -leftInset
} else {
leftInset = 0.0
rightInset = -collectionViewHeight
}
collectionView.reloadData()
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}
更详细的代码可以看我的代码https://github.com/anirudha-music/CollectionViewCenter