Я пытаюсь построить динамическую высоту ячейки в 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 единиц высоты.
Это скриншоты.
На этом снимке экрана вы можете видеть ячейку с нижним пространством.На самом деле высота ячейки ~ 1000, но contentView (с тенью) не умещается
Если я пытаюсь задать 1000 высоту статически, проблем нет, поэтому я могу ошибиться вприменяя динамическую высоту к ячейке.Что я не так делаю в этом?
Спасибо.