我遇到了将Autolayout与动态细胞大小调整相结合并在选择时让细胞增长的问题。
我当前的实现将单元格设置为未选定状态下的高度70。它使用AutoLayout进行布局,并隐藏了额外的信息,从像素71到220:
Normal cell label
---------------- 70px
UILabel
UITextView
UIButton
---------------- 220px
在这种情况下,扩展信息的定位是AutoLayout低于正常的单元格标签。
扩展信息中的UITextView应该增长以适应内容,将单元格的大小增加到220px以上。
我在heightForRow中计算它,通过使单元格出列,配置它并使用systemLayoutSizeFittingSize:来询问它的高度。
不幸的是,大约75%的时间都无法给我正确的尺寸。例外情况是:
1. I load the normal cell and tap to expand.
2. I then scroll down, and scroll back up to the expanded cell.
3. The expanded cell is now the correct height after recycling (still expanded)
我听说过systemLayoutSizeFittingSize:需要从上到下的AutoLayout约束,但我不能强制执行底部约束,因为这意味着这些元素在未展开状态下可见。
问题似乎源于AutoLayout,并且即使使用setNeedsLayout和layoutIfNeeded,它也不会在大多数时间产生正确的大小。
在大多数情况下,我一直在使用以下教程:http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout
答案 0 :(得分:0)
你累了吗
[tableView reloadData]
或
[tableView reloadRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>]
需要再次布置单元格,因此当您向下滚动并向上移动时,单元格会被回收并在再次布局时正确确定其高度。