在UITableViewCell中的UILabel大小不正确(分配文本后的animation)

UILabel的文本在显示后闪烁,首先用一行上的省略号出现,然后占用它所适合的两行。请注意,单元格高度不会改变。

UILabel包装

这是问题:
标签“Друзыя,примитеучастиеинапонитеКоробку!” ( 朋友,参加并填写框)!在视图转换期间,首先出现被截断和错位为“Друзъя,примитеучасти…”。

动画

这只发生在iOS 8.1的iPhone 4上。 所有使用标签的操作(文本分配除外)发生在故事板中。

什么导致这个闪烁?

假设你正在改变cellForRowAtIndexPath的testing,并进一步假设这不会发生在所有的string,只有一定的长度,那么这是一个iOS的错误。

查看关于这个堆栈溢出UITableViewCellpost的冗长讨论,以及一个可能的解决方法:

 override func viewDidLoad() { super.viewDidLoad() tableView.setNeedsLayout() tableView.layoutIfNeeded() tableView.reloadData() } 

笔记

1.我也注意到使用一个很小的值来estimatedRowHeight例如20 ,它不像最小单元那么高,再加上reloadData()也是有益的。

2.在更改单元格宽度时,您需要在setNeedsLayout()之前调用额外的reloadData() ,例如切换tableView.editing

3.一个强大的替代标签修补是使用非可编辑,非可选,没有大写,没有滚动启用,没有显示水平和垂直指标,没有反弹 UITextView


运行这个错误,并尝试各种解决方法:

►在GitHub上find这个解决scheme和Swift Recipes的更多细节。