最后一个水平 collectionview 单元格显示了一半
Last horizontal collectionview cell is half displeyed
我有水平 CollectionView,当我启动应用程序时,我图库中的最后一张图片只显示了一半。如何解决?
contentView 框架可能比 CollectionView 框架大。
假设您希望 collectionView 显示 5 个单元格...
在 viewDidLoad 上:
let cvWidth = collectionView.frame.width
let cvHeight = collectionView.frame.height
let cellEdge = cvWidth / 5
let contentSize = cellEdge * CGFloat(numberOfCells)
collectionView.contentSize = CGSize(width: contentSize, height: cvHeight)
不要忘记设置您的 numberOfCells 值
如果单元格之间有一些 space,您应该这样设置 cellEdge:
let cellEdge = cvWidth / 5 + space
编辑 - 关于 UICollectionViewDelegateFlowLayout:
要在单元格和部分之间设置 space,首先将 UICollectionViewFlowLayoutDelegate 添加到 ViewController:
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
比起你可以通过这个函数设置interspace、行间距和插入:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
最简单的解决方案是添加一些底部 "inset" 值。
这样做
- 在您的 xcode 的 "utility area" 中单击 "size inspector" 选项卡
- 然后参考下图
我遇到过类似的问题,对我有帮助的是设置 minimumInteritemSpacingForSectionAt 和 minimumLineSpacingForSectionAt
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
我有水平 CollectionView,当我启动应用程序时,我图库中的最后一张图片只显示了一半。如何解决?
contentView 框架可能比 CollectionView 框架大。
假设您希望 collectionView 显示 5 个单元格...
在 viewDidLoad 上:
let cvWidth = collectionView.frame.width
let cvHeight = collectionView.frame.height
let cellEdge = cvWidth / 5
let contentSize = cellEdge * CGFloat(numberOfCells)
collectionView.contentSize = CGSize(width: contentSize, height: cvHeight)
不要忘记设置您的 numberOfCells 值
如果单元格之间有一些 space,您应该这样设置 cellEdge:
let cellEdge = cvWidth / 5 + space
编辑 - 关于 UICollectionViewDelegateFlowLayout:
要在单元格和部分之间设置 space,首先将 UICollectionViewFlowLayoutDelegate 添加到 ViewController:
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
比起你可以通过这个函数设置interspace、行间距和插入:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
最简单的解决方案是添加一些底部 "inset" 值。
这样做
- 在您的 xcode 的 "utility area" 中单击 "size inspector" 选项卡
- 然后参考下图
我遇到过类似的问题,对我有帮助的是设置 minimumInteritemSpacingForSectionAt 和 minimumLineSpacingForSectionAt
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 10
}