sizeForItemAtIndexPath
是 UICollectionView 的一个 delegate 方法,用于指定每个 cell 的大小。如果你发现这个方法从未被调用,可能是以下几个原因:
sizeForItemAtIndexPath
方法的对象。sizeForItemAtIndexPath
不被调用。你可以尝试清除缓存或禁用缓存来测试。以下是一个完整的示例,展示了如何设置 UICollectionView 并实现 sizeForItemAtIndexPath
方法:
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()
collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
view.addSubview(collectionView)
}
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)
cell.backgroundColor = .blue
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 100, height: 100)
}
}
通过以上步骤,你应该能够解决 sizeForItemAtIndexPath
从未被调用的问题。如果问题仍然存在,请检查是否有其他代码或配置影响了 UICollectionView 的正常工作。
领取专属 10元无门槛券
手把手带您无忧上云