滚动时未调用 sizeForItemAt
Posted
技术标签:
【中文标题】滚动时未调用 sizeForItemAt【英文标题】:sizeForItemAt not called while scrolling 【发布时间】:2019-12-17 05:46:29 【问题描述】:我在UITableViewCell
中有UICollectionView
,它的委托和数据源在表格单元格类中声明。它在第一次加载时工作正常,但后来在我滚动收藏时改变了它的大小。
我注意到sizeForItemAt
仅在加载时调用,而不是在滚动期间设置单元格时调用。
class HomeCell: UITableViewCell
@IBOutlet weak var collHomeSongs: UICollectionView!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
override func setSelected(_ selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
func setCollection()
collHomeSongs.delegate = self
collHomeSongs.dataSource = self
extension HomeCell: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 10
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
return cell
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize.init(width: 120, height: 180)
【问题讨论】:
发布您已经尝试过的代码。 你还没有调用 setCollection() 请在 viewDidload() 中调用 【参考方案1】:我刚刚得到它的解决方案这个问题出现在 Xcode 11+ 中,解决方案是将集合视图自动大小设置为“无”。 参考:Why on Xcode 11, UICollectionViewCell changes size as soon as you scroll (I already set size in sizeForItem AtIndexPath:)?
【讨论】:
以上是关于滚动时未调用 sizeForItemAt的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView sizeForItemAt 调用但大小不正确
未完全加载单元格时未调用 didSelectItemAtIndexPath
调用 notifyDataSetChanged 时未更新带有 customAdapter 的 ListView?