久しぶりにUICollectionViewCell
の実装をコードベースで行ったら、初心者みたいなやらかしをしたのでメモ👷♀️
やらかし
やらかしの一部がこちら。そうです、動的にCellの高さが変わるような場合に、Cellが再利用されるタイミングでImageViewのframeが以前のcontentView.frame
のままになるので、予期しないサイズでImageView
が表示されます。
class Cell: UICollectionViewCell { private lazy var imageView: UIImageView = { let imageView = UIImageView(frame: contentView.frame) imageView.contentMode = .scaleAspectFill imageView.clipsToBounds = true imageView.layer.cornerRadius = 16 return imageView }()
修正
いつもxibでやっているように、今回はAutoLayoutで制約を張ることで問題を解消しました🤮
contentView.addSubview(imageView) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).isActive = true imageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
てな感じで本日も以上となります🍺