Swift 2.0:具有不同单元格宽度的集合视图
Swift 2.0: Collection view with different cell widths
我在 ViewController 上有一个简单的集合视图。它是一个单一的、水平滚动的条带。 A 或 B 类型的单元格数量不限。每个 class 单元格具有不同的宽度(A=160,B=40)。
因此集合数组可能是 AABBABAABA,集合视图单元格宽度应根据单元格类型而改变。
我试过在属性中设置单元格宽度。我已经尝试通过标签、isKindOfClass、tintColors、viewDidLoad 等确定要使用的宽度。似乎没有任何效果,所以我认为它比最初想象的要复杂。
我已经实现了以下内容,但它总是选择 160 宽度,因为标签总是被发现为零。我想我缺少布局或其他东西?
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if collectionView.cellForItemAtIndexPath(indexPath)?.tag == 111 {
return CGSize(width: 40, height: 80)
} else {
return CGSize(width: 160, height: 80)
}
}
标签在 didSelectItemAtIndexPath 函数中被识别,但似乎不在尺寸调整函数中。
有人有什么想法吗?
谢谢
我认为一种方法是使用一个数组 属性 来存储宽单元格的索引路径。在委托函数中,您只需这样做:
return wideCellsIndexPaths.contains(indexPath) ?
CGSize(width: 160, height: 80) : CGSize(width: 40, height: 80)
如果您只有 2 个单元格,只需在 indexpath.row 的基础上设置条件
避免标签。
希望对你有用。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if indexPath.row == 0 {
return CGSizeMake(40,80)
} else {
return CGSizeMake(160,80)
}
}
我在 ViewController 上有一个简单的集合视图。它是一个单一的、水平滚动的条带。 A 或 B 类型的单元格数量不限。每个 class 单元格具有不同的宽度(A=160,B=40)。
因此集合数组可能是 AABBABAABA,集合视图单元格宽度应根据单元格类型而改变。
我试过在属性中设置单元格宽度。我已经尝试通过标签、isKindOfClass、tintColors、viewDidLoad 等确定要使用的宽度。似乎没有任何效果,所以我认为它比最初想象的要复杂。
我已经实现了以下内容,但它总是选择 160 宽度,因为标签总是被发现为零。我想我缺少布局或其他东西?
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if collectionView.cellForItemAtIndexPath(indexPath)?.tag == 111 {
return CGSize(width: 40, height: 80)
} else {
return CGSize(width: 160, height: 80)
}
}
标签在 didSelectItemAtIndexPath 函数中被识别,但似乎不在尺寸调整函数中。
有人有什么想法吗?
谢谢
我认为一种方法是使用一个数组 属性 来存储宽单元格的索引路径。在委托函数中,您只需这样做:
return wideCellsIndexPaths.contains(indexPath) ?
CGSize(width: 160, height: 80) : CGSize(width: 40, height: 80)
如果您只有 2 个单元格,只需在 indexpath.row 的基础上设置条件 避免标签。 希望对你有用。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if indexPath.row == 0 {
return CGSizeMake(40,80)
} else {
return CGSizeMake(160,80)
}
}