我有一个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)
}
}
问题是没有错误,但像元大小不变
如果您需要了解更多信息,只需写评论即可。
谢谢。
发布于 2016-10-14 00:49:55
这就是我现在的代码,它是有效的:
collectionView.delegate = dataSourceDelegate
collectionView.dataSource = dataSourceDelegate
collectionView.tag = row
collectionView.setContentOffset(collectionView.contentOffset, animated:false)
collectionView.reloadData()
collectionView.register(UINib(nibName: "eventsCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "eventsCollectionViewCell")
if row == 2{
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: 120, height: 120)
layout.scrollDirection = .horizontal
collectionView.collectionViewLayout = layout
}else if row == 4 {
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: 222, height: 200)
layout.scrollDirection = .horizontal
collectionView.collectionViewLayout = layout
}else{
print("else")
}
发布于 2016-10-13 19:48:39
在Swift 3中,此方法的签名已更改为:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
// your code here
}
注意细微的区别:用(_ collectionView: ...
代替(collectionView: ...
。
这是因为在Swift 3中,您必须显式指定第一个参数的标签。您可以通过添加下划线字符_
来覆盖此默认行为。
此外,请确保您的类同时采用UICollectionViewDelegate
和UICollectionViewDelegateFlowLayout
协议
class MyViewController: UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {
// your code here
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
// your code here
}
}
请参阅this link了解更多关于Swift 3中的更改。
发布于 2017-01-31 01:33:14
您需要在类声明中指定实现协议UICollectionViewDelegateFlowLayout。
class PhrasesCompactCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout
https://stackoverflow.com/questions/40019875
复制相似问题