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

时间:2016-02-08 00:28:49

标签: ios uitableview autolayout uilabel

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

UILabel wrap

问题在于:
标签“Друзъя,примитеучастиеинаполнитеКоробку!” (朋友,参与并填写方框!)在视图转换期间首先出现截断并且未对齐为“Друзъя,примитеучасти...”。

animation

仅在iOS 8.1的iPhone 4上发生这种情况。使用Label进行的所有操作(文本分配除外)都在Storyboard中进行。

导致这种闪烁的原因是什么?

1 个答案:

答案 0 :(得分:1)

假设您正在更改cellForRowAtIndexPath中的测试,并进一步假设所有字符串都没有发生,只有一些具有一定长度,那么这是一个iOS错误。

请参阅this Stack Overflow UITableViewCell post上的冗长讨论,以及可能的解决方法:

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.setNeedsLayout()
    tableView.layoutIfNeeded()
    tableView.reloadData()
}

备注

1。我还注意到使用estimatedRowHeight的小值,例如20,它不像最小的单元格那么高,加上加倍reloadData()也很有用。

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

3。修补标签的强大替代方法是使用非可编辑,非可选,无资本化,noScrolling启用,不显示水平&垂直指标,没有反弹 UITextView

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

►在GitHub上找到此解决方案,并在Swift Recipes上找到其他详细信息。