Это объясняется в ответе ниже.
HorizontalCollectionView Ширина и интервал содержимого
Рассчитать размер строки с ассоциированным шрифтом.
extension String {
func size(with font: UIFont) -> CGSize {
let fontAttribute = [NSAttributedString.Key.font: font]
let size = self.size(withAttributes: fontAttribute)
return size
}
}
Возвращает рассчитанную ширину вместе с высотой collectionView в collectionView(_, collectionViewLayout:_, sizeForItemAt)
.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let newWidth = titles[indexPath.row].size(with: labelFont!).width + 10 //Added 10 to make the label visibility very clear
return CGSize(width: newWidth, height: collectionView.bounds.height)
}