Как сделать динамическую ширину UICollectioncell в соответствии с текстом - PullRequest
0 голосов
/ 28 ноября 2018

Ребята. Я хочу изменить размер ячейки следующим образом: enter image description here

Автоматическая настройка на текст.я могу достичь enter image description here

Я пытался найти, но не смог найти решение.Как я могу сделать его динамическим для текста.Теги взяты из класса модели, а цвет и фон изменяются по сравнению с пользовательским классом для ячейки.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Это объясняется в ответе ниже.

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)
}
0 голосов
/ 28 ноября 2018

Проверьте код ниже: -

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let btn = UIButton()
        btn.setTitle(?*self.arr[indexPath.row].name, for: .normal)
        let btnWidth =  ?*btn.intrinsicContentSize.width > UIScreen.main.bounds.width - 32 ? ?*btn.intrinsicContentSize.width - 32 : ?*btn.intrinsicContentSize.width
        return CGSize(width: (?*btnWidth), height: 48)
    }

Вы можете изменить его в соответствии с вашими требованиями.Прокомментируйте, если вам нужна помощь в этом.

Надеюсь, это поможет:)

...