我正在尝试在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高度,那么没有问题,因此在将动态高度应用于单元格时,我可能做错了。我在这做错了什么?
谢谢。