Вы можете сделать это, чтобы вычислить ширину из строки
let padding = 30
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let lbl = UILabel()
lbl.text = arr[indexPath.item] // arr = [String]()
let si = lbl.sizeThatFits(CGSize(width:CGFloat.greatestFiniteMagnitude, height:40))
print(si.width)
return CGSize(width:si.width + padding , height:40)
}
class VCName:UIViewController , UICollectionViewDelegate , UICollectionViewDataSource , UICollectionViewDelegateFlowLayout { }