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