Ячейка динамической высоты не применяется в CollectionViewCell - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь построить динамическую высоту ячейки в Swift.На самом деле я добился этой динамической высоты ячейки, но мне нужно добавить новую строку в ячейку, затем вычислить ее высоту, а затем динамически суммировать высоту двух меток и затем применить.Когда я добавляю вторую метку в ячейку, последняя ячейка не применяется для меня, фактически в методе sizeForItemAt он вычисляет правильное значение, но он не применяется к ячейке в последней строке collectionView.

Это мойМетод:

if collectionView != typesCollectionView {
            let summary = summaries[indexPath.row].failure
            let failure = summaries[indexPath.row].lessons
            let viewSize = CGSize(width: self.view.frame.width-50, height: 100000)

            let failureSize = NSString(string: summary).boundingRect(with: viewSize,
                                                                    options: NSStringDrawingOptions.usesLineFragmentOrigin,
                                                                    attributes: [NSAttributedString.Key.font:UIFont(name: "Hack", size: 15)],
                                                                    context: nil)

            let lessonSize = NSString(string: failure).boundingRect(with: viewSize,
                                                                    options: NSStringDrawingOptions.usesLineFragmentOrigin,
                                                                    attributes: [NSAttributedString.Key.font:UIFont(name: "Hack", size: 15)],
                                                                    context: nil)

            var newSize = 10 + 8 + 10 + 10 + 10 + 5 + 5 + failureSize.height + 80 + 10
            newSize += 10 + 10 + 10
            newSize += 10
            newSize += lessonSize.height
            return CGSize(width: self.view.frame.width, height: newSize)
        }

10 + 8 + 10 ... сторона - это высота между метками, и они правильные.

В ячейке я должен динамически пометить как failureLabel и lessonLabel.

И журналы содержимого похожи на приведенные ниже.(размер - высота.)

indexPath.row => 0 size => 296.0615234375
indexPath.row => 1 size => 332.08203125
indexPath.row => 2 size => 476.1640625
indexPath.row => 3 size => 620.24609375
indexPath.row => 4 size => 1016.4716796875

Несмотря на высоту последней ячейки 1016, она применялась как высота первой ячейки, приблизительно ~ 250 единиц высоты.

Это скриншоты.

enter image description here

На этом снимке экрана вы можете видеть ячейку с нижним пространством.На самом деле высота ячейки ~ 1000, но contentView (с тенью) не умещается enter image description here

Если я пытаюсь задать 1000 высоту статически, проблем нет, поэтому я могу ошибиться вприменяя динамическую высоту к ячейке.Что я не так делаю в этом?

Спасибо.

...