我想在集合视图中的第一个单元格之前添加一些空格,类似于偏移量,我的集合视图具有水平滚动位置。
这是我当前的收藏视图:
它有一个35的主要约束,我想要的是从" x"开始的单元格。 35的位置,但能够像这样滚动全宽:
有没有办法使用Swift 3在集合视图中创建初始偏移?
答案 0 :(得分:4)
答案 1 :(得分:0)
您需要设置contentInset
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
return UIEdgeInsetsMake(top, left, bottom, right);
}
您可以详细查看here
答案 2 :(得分:0)
这里的派对有点晚了,但我遇到了几个解决方案
正确的方法(滚动到第一个单元格):
https://coderwall.com/p/e-ajeq/uicollectionview-set-initial-contentoffset
简单的hacky方式: 我在第一个项目中添加了一个透明的“spacer”单元格,以抵消剩余的单元格。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath)
if (indexPath.row == 0) {
cell.backgroundColor = UIColor.white
return cell
}
cell.backgroundColor = UIColor.green
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if (indexPath.row == 0){
//spacer
return CGSize(width:6, height:50)
}
return CGSize(width: 50, height: 50)
}
答案 3 :(得分:0)
您可以在collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath)中的初始单元格之前设置空间,如下所示:
if (indexPath.row == 0 || indexPath.row == 1)
{
// Set value according to user requirements
cell.frame.origin.y = 0
cell.frame.origin.y = 10
}
答案 4 :(得分:0)
Swift 5 / Xcode 10.2
感谢亚历山大·斯皮里切夫。
根据他的回答,您还可以通过编程将左插图设置为 35分:
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 8
layout.sectionInset = UIEdgeInsets(top: 0, left: 35, bottom: 0, right: 0)
collectionView.setCollectionViewLayout(layout, animated: false)
答案 5 :(得分:0)
如果仅希望该部分中的单元格具有填充,请按照其他答案中的建议使用sectionInset
中的UICollectionViewFlowLayout
。
但据我所知,您最好在集合视图本身上设置contentInsets
(从UIScrollView
继承)