Swift 4, iOS, как определить высоту надписи после добавления строкового значения - PullRequest
0 голосов
/ 05 сентября 2018

в UICollectionView размер моей ячейки должен быть 150 + label.height. Теперь я использую пользовательский макет для вычисления высоты = 150, если изображение существует в ImageView, если не высота = 100. Это легко. Но как рассчитать label.height, когда я не знаю, какой текст я получу от Api? Есть ли какая-нибудь функция, чтобы получить это?

customLayout.swift

let photoHeight = delegate.collectionView(collectionView, heightForPhotoAtIndexPath: indexPath) > 0 ? 150 : 100
let height = cellPadding * 2 + CGFloat(photoHeight) + (labelHeight??????)

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете рассчитать высоту этикетки, используя функцию ниже

extension UILabel {

    func heightToFitContent() -> CGFloat {

        self.numberOfLines = 0
        self.lineBreakMode = NSLineBreakMode.byWordWrapping
        let maximumLabelSize : CGSize = CGSize(width: self.frame.size.width, height: CGFloat.greatestFiniteMagnitude)
        let expectedLabelSize : CGSize = self.sizeThatFits(maximumLabelSize);


        self.sizeToFit()

        return expectedLabelSize.height
    }
}

вызовите эту функцию в потоке пользовательского интерфейса. Надеюсь, это поможет.

...