Для ячеек динамической высоты UICollectionView мы используем,
if let layout = self.collectionViewLayout as? UICollectionViewFlowLayout {
layout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
}
с надлежащим ограничением высоты и ширины, он отлично работает с версиями iOS 11. *, но он ломается и не делает ячейки динамическими для iOS 12.0