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

Posted

技术标签:

【中文标题】UITableViewCell 中的 UILabel 大小不正确(分配文本后的动画)【英文标题】:UILabel incorrectly sized in UITableViewCell (Animation after assigning text) 【发布时间】:2016-02-08 00:28:49 【问题描述】:

UILabel 中的文本在显示后会闪烁,首先以省略号出现在一行,然后占据它适合的 2 行。 请注意,单元格高度没有改变。

问题来了: 标签“Друзъя, примите участие и наполните Коробку!” (朋友们,参加并填满方框!)在视图转换期间首先出现截断并错位为“Друзъя, примите участи...”。

这只发生在装有 ios 8.1 的 iPhone 4s 上。所有使用标签的操作(文本分配除外)都发生在情节提要中。

是什么导致了这种闪烁?

【问题讨论】:

有什么问题/疑问? 【参考方案1】:

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

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

override func viewDidLoad() 
    super.viewDidLoad()

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


备注

1. 我还注意到,使用较小的 estimatedRowHeight 值(例如 20,它没有最小的单元格那么高)与加倍的 reloadData() 结合使用是也有好处。

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

3. 一个强大的替代标签的替代方法是使用 不可编辑、不可选择、无大写、无滚动启用、无显示水平和垂直指示器、无反弹 em>UITextView


练习这个错误,并尝试各种解决方法:

► 在GitHub 上查找此解决方案,在Swift Recipes 上查找更多详细信息。

【讨论】:

天啊!谢谢,它有效!我想知道这个解决方案是如何被发现的。 痛苦而非常小心地

以上是关于UITableViewCell 中的 UILabel 大小不正确(分配文本后的动画)的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象

确定 UITableViewCell 中的 UIButton

UITableViewCell 事件中的 UIButton 不起作用

UITableViewCell 中的 UICollectionView

UITableVIewCell 中的 UIScrollView 不会滚动

UITableViewCell 中的 UITextField - UIButton