Wil*_* T. 34 iphone xcode objective-c ios uicollectionview
我想用来UICollectionView显示水平滚动的缩略图列表,但是,我希望这是一行.在另一个视图中,我正在显示缩略图,UICollectionView但是这个缩略图垂直滚动,它在一列中.
目前,我这样做的方法是将集合视图的大小更改为仅对一个项目足够大,以便自动装配和工作,但现在我正在处理可变大小的项目,因此它不再起作用.
如何UICollectionView显示一行或一列?
Nik*_*rev 28
我猜你在使用内置的Flow Layout.但是,对于您的情况,您应该进行自定义UICollectionView Layout.将其作为子类UICollectionViewFlowLayout并在init方法中添加此代码:
- (id)init {
if ((self = [super init])) {
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.minimumLineSpacing = 10000.0f;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
的minimumLineSpacing关键是使之有一条线在这里.
我希望这有帮助!
小智 12
我发现设置minimumLineSpacing刚刚创建的滚动区域非常大,并且设置minimumInteritemSpacing=big完成后将项目保存在一个滚动的行或列中,位于中间collectionview.
如果您可以信任类型转换,则没有真正的原因可以进行子类化.
((UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout).minimumLineSpacing = 1000.0f;
Run Code Online (Sandbox Code Playgroud)
如果您从一个笔尖加载了您的collectionView,您还可以使用属性和大小检查器中的参数.
滚动方向也一样.
当您初始化您的UICollectionView传递时,请UICollectionViewFlowLayout在 init 参数中输入以下内容。
注意:您不需要创建子类 UICollectionViewFlowLayout
var collectionViewFlowControl = UICollectionViewFlowLayout()
collectionViewFlowControl.scrollDirection = UICollectionViewScrollDirection.Horizontal
Run Code Online (Sandbox Code Playgroud)
对于 0 px 单元格间距:
collectionViewFlowControl.minimumInteritemSpacing = 0;
collectionViewFlowControl.minimumLineSpacing = 0;
collectionView = UICollectionView(frame: CGRectMake(0, 0, self.view.frame.size.width, 120), collectionViewLayout: collectionViewFlowControl)
Run Code Online (Sandbox Code Playgroud)
在 iOS 13 中,感谢 UICollectionViewCompositionalLayout,这是微不足道的,因为您可以在水平布局中指定每列的单元格数,或者在垂直布局中指定每行的单元格数。这是单个水平滚动、垂直居中的单元格行的简单示例:
func layout() -> UICollectionViewCompositionalLayout {
let itemSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .fractionalHeight(1))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(
widthDimension: .absolute(75),
heightDimension: .absolute(75))
let group = NSCollectionLayoutGroup.vertical(
layoutSize: groupSize, subitem: item, count: 1) // *
group.edgeSpacing = NSCollectionLayoutEdgeSpacing(
leading: nil, top: .flexible(0),
trailing: nil, bottom: .flexible(0))
let section = NSCollectionLayoutSection(group: group)
section.interGroupSpacing = 65
let config = UICollectionViewCompositionalLayoutConfiguration()
config.scrollDirection = .horizontal
let layout = UICollectionViewCompositionalLayout(
section: section, configuration:config)
return layout
}
Run Code Online (Sandbox Code Playgroud)
将您的集合视图设置collectionViewLayout为该函数调用的输出,一切就绪。
| 归档时间: |
|
| 查看次数: |
34245 次 |
| 最近记录: |