Swift 中的 UICollectionView 自定义布局
Posted
技术标签:
【中文标题】Swift 中的 UICollectionView 自定义布局【英文标题】:UICollectionView custom layout in Swift 【发布时间】:2016-01-07 02:43:40 【问题描述】:我真的需要帮助...
我需要在 UICollectionView 中使用自定义布局,并且我想要像图像一样的布局:
如何快速获得此布局?
【问题讨论】:
【参考方案1】:您需要滚动视图吗?还是固定的? 因为如果您不滚动,您可以使用UIStackView 并为单元格提供不同的宽度乘数。
但如果您必须滚动,您可以使用https://github.com/keighl/KTCenterFlowLayout 并使用 UICollectionView 中的委托方法更改单元格的大小
【讨论】:
【参考方案2】:如果item的大小都一样,可以使用UICollectionViewFlowLayout设置itemSize
。
如果项目大小不同,可以使用 UICollectionViewFlowLayout
并实现其collectionView:layout:sizeForItemAtIndexPath:
委托方法以返回所需的大小。
顶部的栏可能是UICollectionElementKindSectionHeader
,或者只是一个更大的单元格。
【讨论】:
【参考方案3】:对于需要滚动布局的人,可以试试 ScrollableStackView 库。这是github页面:
https://github.com/gurhub/ScrollableStackView
这里是一些示例代码:
斯威夫特
import ScrollableStackView
var scrollable = ScrollableStackView(frame: view.frame)
view.addSubview(scrollable)
// add your views with
let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 55))
rectangle.backgroundColor = UIColor.blue
scrollable.stackView.addArrangedSubview(rectangle)
// ...
Objective-C
@import ScrollableStackView
ScrollableStackView *scrollable = [[ScrollableStackView alloc] initWithFrame:self.view.frame];
scrollable.stackView.distribution = UIStackViewDistributionFillProportionally;
scrollable.stackView.alignment = UIStackViewAlignmentCenter;
scrollable.stackView.axis = UILayoutConstraintAxisVertical;
[self.view addSubview:scrollable];
UIView *rectangle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 55)];
[rectangle setBackgroundColor:[UIColor blueColor]];
// add your views with
[scrollable.stackView addArrangedSubview:rectangle];
// ...
希望对某人有所帮助。
【讨论】:
以上是关于Swift 中的 UICollectionView 自定义布局的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的 UICollectionView 自定义布局重新加载问题
UICollectionView 中的 Alamofire + Swift
Swift 中的 UICollectionView 自定义布局
Swift 3 中的 UICollectionView 自定义按钮操作