在UITableViewCell中的UILabel大小不正确(分配文本后的animation)
UILabel
的文本在显示后闪烁,首先用一行上的省略号出现,然后占用它所适合的两行。请注意,单元格高度不会改变。
这是问题:
标签“Друзыя,примитеучастиеинапонитеКоробку!” ( 朋友,参加并填写框)!在视图转换期间,首先出现被截断和错位为“Друзъя,примитеучасти…”。
这只发生在iOS 8.1的iPhone 4上。 所有使用标签的操作(文本分配除外)发生在故事板中。
什么导致这个闪烁?
假设你正在改变cellForRowAtIndexPath
的testing,并进一步假设这不会发生在所有的string,只有一定的长度,那么这是一个iOS的错误。
查看关于这个堆栈溢出UITableViewCell
post的冗长讨论,以及一个可能的解决方法:
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的更多细节。