我的 collectionView 函数( sizeForItemAt indexPath )不起作用

my collectionView function( sizeForItemAt indexPath ) does'nt work

嗨,工程师们,祝你好运,基本上我想连续调整我的 collectionView 照片的大小,但是当我使用名为 sizeForItemAt indexPath 的 collectionView 方法时,它在模拟器上对我不起作用。 在我使用这个功能之前,这是我的模拟器:

这是我的 viewDidLoad 和函数代码:

override func viewDidLoad() {
    super.viewDidLoad()
    print("\n iid is \(cid)")
     fetchOffer()
     collectionView.dataSource = self
     collectionView.delegate = self
    collectionView.collectionViewLayout = UICollectionViewFlowLayout()

}
func collectionView(_ collectionView: UICollectionView , layout collectionViewLayout: UICollectionViewLayout , sizeForItemAt indexPath : IndexPath ) -> CGSize {
    return CGSize(width: 200, height: 300)
}

在使用这些之后,我的模拟器向我展示了这个:

所以有人对这件事有想法吗?

我会删除委托方法:

func collectionView(_ collectionView: UICollectionView , layout collectionViewLayout: UICollectionViewLayout , sizeForItemAt indexPath : IndexPath ) -> CGSize { return CGSize(width: 200, height: 300) }

而是依赖于内容的固有大小(即模拟器中的 UIImageView 和 UILabel)。如果您设置相对于您的超级视图的内部内容的大小,那么 CollectionViewCell 将自身大小适当地。

class YourVC: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UICollectionViewDelegate {
override func viewDidLoad() {
    super.viewDidLoad()
    print("\n iid is \(cid)")
     fetchOffer()
     collectionView.dataSource = self
     collectionView.delegate = self

}
}

您需要将 UICollectionViewDelegateFlowLayout 添加到您的 UIViewController 中,它(layout collectionViewLayout) 将被调用。

检查一下,如果您在这里发现任何问题,请告诉我。