gpt4 book ai didi

ios - UICollectionView刷新问题

转载 作者:行者123 更新时间:2023-11-28 15:45:54 26 4
gpt4 key购买 nike

在一个 iOS 应用程序中,我有一个 UICollectionView,它有 100(或 80,或 40)个开始的单元格。一开始一切都很好,布局还可以,每个单元格的大小也合适,100个就小一些,只有40个就大一些。

在应用内,用户可以将单元格数量更改为 100(或 80,或 40)。当数字发生变化时,每个单元格的布局和大小都应相应更改。但是那部分没有按预期工作。

当用户更改单元格数量时,将执行此代码:

myCollectionView.reloadData()
myCollectionView.collectionViewLayout.invalidateLayout()

由于某些原因,有些东西不起作用。我应该在上面的代码中做更多或不同的事情吗?单元格的数量是正确的,但新闻单元格的大小乱七八糟,我对布局(定位)不太确定。

就UICollectionViewDelegate协议(protocol)而言,我只实现了一个方法:

func collectionView(_ collectionView: UICollectionView,
didSelectItemAt indexPath: IndexPath) {
.........
}

对于 UICollectionViewDelegateFlowLayout 协议(protocol),我实现了以下内容:

func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let cellSide = UIScreen.main.bounds.width * 3 / CGFloat(brain.getSide()! * 4)
return CGSize(width: cellSide, height: cellSide)
}


func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 6.0
}


func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return UIScreen.main.bounds.width / (CGFloat(brain.getSide()!) * 4.4)
}

看起来上面的方法在开始时工作正常,给出了足够的值。但是当用户更改设置时,它们甚至似乎都不会被调用。

最佳答案

请试试这个重载方法

objective-c

[self.collectionView performBatchUpdates:^{
[myCollectionView reloadData];
}
completion:^(BOOL finished) {}
];

swift -3

myCollectionView?.performBatchUpdates({
myCollectionView.reloadData()
}, completion: { (result: Bool) in
})

关于ios - UICollectionView刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com