Swift UICollectionView是否垂直显示,即使滚动方向设置为水平?
我正在尝试使用此代码水平绘制Swift UICollectionView是否垂直显示,即使滚动方向设置为水平?,swift,uicollectionview,uicollectionviewflowlayout,Swift,Uicollectionview,Uicollectionviewflowlayout,我正在尝试使用此代码水平绘制UIScrollView列表,但未按预期工作 let nib = UINib(nibName: cellIdentifier, bundle: nil) collectionView.register(nib, forCellWithReuseIdentifier: cellIdentifier) collectionView.collectionViewLayout = layout(withParentView: view) se
UIScrollView
列表,但未按预期工作
let nib = UINib(nibName: cellIdentifier, bundle: nil)
collectionView.register(nib, forCellWithReuseIdentifier: cellIdentifier)
collectionView.collectionViewLayout = layout(withParentView: view)
self.collectionView.delegate = self
self.collectionView.dataSource = self
流程布局法
// #PRAGMA mark - UICollectionViewFlowLayout()
func layout(withParentView parentView: UIView) -> UICollectionViewFlowLayout {
let layout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: 160, height: 65)
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.minimumLineSpacing = 0
layout.minimumInteritemSpacing = 0
layout.scrollDirection = .horizontal
return layout
}
下面是委托和数据源方法
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! RowCollectionViewCell
if indexPath.row % 2 == 0 {
cell.backgroundColor = UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1)
}else {
cell.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
}
cell.label.text = "Field\(indexPath.row)"
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
return CGSize(width: 160, height: 65)
}
当我运行时,它会显示以下内容(项目的垂直列表)。有什么我遗漏的吗。任何帮助都将不胜感激
我想您不明白
UICollectionViewFlowLayout
是如何工作的
流程布局使用基于线的布局。这对您来说意味着,如果将滚动方向设置为水平,则单元格将自上而下地排列成一行,直到没有更多可用空间,然后移动到下一行
您可以通过将单元格数更改为更高的值来轻松验证这一点。(大概10个?)
我建议您观看这篇文章,以便更好地了解
UICollectionView
的工作原理。我已将一些单元格更改为10,字段8、字段9转到下一列,现在可以水平滚动。但是我如何才能实现单个单元格将转到下一列?@Vishal16尝试减小集合视图大小或增大项目大小。你救了我的命。