我有一个tableView
,在每个tableViewCell
中都有一个collectionView
。
我正在尝试使用以下代码更改collectionView大小:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
if collectionView.tag == 2{
return CGSize(width: 100, height: 100)
}else if collectionView.tag == 4 {
return CGSize(width: 222, height: 200)
}else{
return CGSize(width: 10, height: 10)
}
}
问题是没有错误,但单元格不改变大小
如果你想知道更多,请写评论。
谢谢大家。
7条答案
按热度按时间e7arh2l61#
首先,不要忘记扩展自UICollectionViewDelegateFlowLayout委托。
对于单个collectionview显示逻辑:
故事板中的重要一点不要忘记估计大小:无
myzjeezk2#
此方法的签名在Swift 3中已更改为:
注意细微的区别:
(_ collectionView: ...
而不是(collectionView: ...
。这是因为在Swift 3中,你必须显式地指定第一个参数的标签。您可以通过添加下划线字符
_
来覆盖此默认行为。此外,确保类同时采用
UICollectionViewDelegate
和UICollectionViewDelegateFlowLayout
协议请参阅this link以了解有关Swift 3中更改的更多信息。
bxpogfeg3#
您需要在类声明中指定实现协议UICollectionViewDelegateFlowLayout。
odopli944#
这是我现在的代码,它可以工作:
qmelpv7a5#
简体字:
试试加
较长版本:
对我来说,这是一个小小的错误--
这将调用这些方法
但它不会***调用
因为这不是UICollectionView的dataSource的一部分。它是UICollectionView委托的一部分。
添加以下内容解决了我的问题。
vddsk6oq6#
我也有同样的问题!如果您使大小为宽度的一半(宽度/2),那么它仍然会显示为整个宽度,因为填充被添加到宽度/2。
修复:确保将情节提要中的节插入设置为0。或者,将宽度/2调整为包含剖面插图的大小。
我花了点时间才修好那个- )
vh0rcniy7#
不要忘记将UICollectionViewFlowLayout对象分配给您的collectionViewLayout,因为UICollectionView默认使用的是UICollectionViewLayout,而不是UICollectionViewFlowLayout。
let flowLayout = UICollectionViewFlowLayout()
collectionView.collectionViewLayout = flowLayout