Hi Brian,
Awesome course! CGFloat.greatestFiniteMagnitude works too for initial height in auto sizing AppDetailCell:
class AppDetailController: ...
...
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let size: CGSize = .init(width: view.frame.width, height: .greatestFiniteMagnitude)
let dummyCell = AppDetailCell(frame: .init(origin: .zero, size: size))
dummyCell.app = self.app
dummyCell.layoutIfNeeded()
let estimatedSize = dummyCell.systemLayoutSizeFitting(size)
return .init(width: view.frame.width, height: estimatedSize.height)
}