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

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

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

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

是什么导致了这种闪烁?

【问题讨论】:

  • 有什么问题/疑问?

标签: ios uitableview autolayout uilabel


【解决方案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 上查找更多详细信息。

【讨论】:

  • 天啊!谢谢,它有效!我想知道这个解决方案是如何被发现的。
  • 痛苦而非常小心地
猜你喜欢
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多