次のコードを使用して、セルのサイズを個別に変更しようとしています。動的にセルサイズを変更する際のエラー
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var itemSize : CGSize?
let currentCell = self.collectionView?.cellForItem(at: indexPath) as! CustomCell
let imageSize : CGSize = (currentCell.imageView?.image?.size)!
let aspectRatio : CGFloat = imageSize.width/imageSize.height
if aspectRatio > 1 {
itemSize = CGSize(width: self.maxItemSize.width, height: maxItemSize.height/aspectRatio)
}else{
itemSize = CGSize(width: self.maxItemSize.width * aspectRatio, height: maxItemSize.height)
}
return itemSize!
}
しかし、私はいつも致命的なエラーを取得:私はブロックを削除する場合は、他の後、すべてが完璧に動作
let currentCell = self.collectionView?.cellForItem(at: indexPath) as! CustomCell
このラインでオプションの値をアンラップしながら、予想外に誰もが何が起こっているかを知っている.. nilを見つけに?
ありがとうございます。
編集:追加されましたCellForItemAt機能
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! CustomCell
cell.backgroundColor = colorArray[indexPath.section]
cell.imageView?.image = imageArray[indexPath.item]
return cell
}
@ThomasG。お返事ありがとうございました。あなたは正しいです..私はテストしました。問題はcustomCellへのダウンキャストにありますが、何が間違っているのかまだ分かりません。私は編集部分にCellForItemAt関数を提供しました。本当にありがとう! – user3608914