Dec*_*nna 5 uicollectionview swift
我正在寻找使用以下功能的方法,但不幸的是它并未被调用。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewFlowLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
let cellCount = Double(collectionView.numberOfItems(inSection: section))
if let cell = collectionView.cellForItem(at: IndexPath(row: 0, section: section))
{
let cellWidth = Double(cell.frame.size.width)
let totalCellWidth = cellWidth * cellCount
let cellSpacing = Double(collectionViewLayout.minimumInteritemSpacing)
let totalSpacingWidth = cellSpacing * (cellCount - 1)
let leftInset = (collectionView.frame.width - CGFloat(totalCellWidth + totalSpacingWidth)) / 2
let rightInset = leftInset
return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}
return collectionView.layoutMargins
}
Run Code Online (Sandbox Code Playgroud)
我收到以下控制台错误,但是我的单元格小于我的collectionView,并且将节插图和布局边距设置为0。
2017-03-30 11:25:14.624 Prep [92400:1862856]未定义UICollectionViewFlowLayout的行为,因为:2017-03-30 11:25:14.624 Prep [92400:1862856]项目高度必须小于UICollectionView的高度减去该部分可插入顶部和底部值,减去内容可插入顶部和底部值。2017-03-30 11:25:14.624 Prep [92400:1862856]相关的UICollectionViewFlowLayout实例为,并附加到;层=; contentOffset:{0,0}; contentSize:{0,68.5}>集合视图布局:。2017-03-30 11:25:14.625 Prep [92400:1862856]在UICollectionViewFlowLayoutBreakForInvalidSizes处创建一个符号断点,以在调试器中捕获此断点。单元格高度-> 42.0
通讯协定
class OverviewViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var vipCollectionView: UICollectionView!
var hostedMeetingsArray: [String]?
var vipArray: [Attendee]?
class OverviewViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var vipCollectionView: UICollectionView!
var hostedMeetingsArray: [String]?
var vipArray: [Attendee]?
Run Code Online (Sandbox Code Playgroud)
好吧,没有调用 insetForSectionAt 的问题是你必须像这样实现它:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
//access to minimumInteritemSpacing by casting to UICollectionViewFlowLayout
let layout = collectionViewLayout as! UICollectionViewFlowLayout
let spacing = layout.minimumInteritemSpacing
return UIEdgeInsetsMake(0.5,0,0.5,0)
}
Run Code Online (Sandbox Code Playgroud)
查看 UICollectionViewDelegateFlowLayout 协议。insetForSectionAt 声明如下:
@available(iOS 6.0, *)
optional public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
Run Code Online (Sandbox Code Playgroud)
因此,您需要第一个可选参数来实现此功能。
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |