UITableViewCell 中的 UILabel 大小不正确(分配文本后的动画)
UILabel incorrectly sized in UITableViewCell (Animation after assigning text)
UILabel
中的文字显示后闪烁,先是单行出现省略号,然后占满2行。
请注意,单元格高度没有改变。
这是问题所在:
标签“Друзъя, примите участие и наполните Коробку!” (朋友们,参与并填写方框!)在视图转换期间首先出现 截断 并且未对齐为“Друзъя, примите участи...” .
这只发生在 iPhone 4s 与 iOS 8.1。所有对 Label 的操作(文本分配除外)都发生在 Storyboard 中。
造成这种闪烁的原因是什么?
假设您正在更改 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. 修补标签的可靠替代方法是使用 不可编辑、不可选择、none 大写、启用无滚动、没有显示水平和垂直指示器,没有反弹 UITextView
。
练习这个错误,并尝试各种解决方法:
► 在 GitHub and additional details on Swift Recipes 上找到此解决方案。
UILabel
中的文字显示后闪烁,先是单行出现省略号,然后占满2行。
请注意,单元格高度没有改变。
这是问题所在:
标签“Друзъя, примите участие и наполните Коробку!” (朋友们,参与并填写方框!)在视图转换期间首先出现 截断 并且未对齐为“Друзъя, примите участи...” .
这只发生在 iPhone 4s 与 iOS 8.1。所有对 Label 的操作(文本分配除外)都发生在 Storyboard 中。
造成这种闪烁的原因是什么?
假设您正在更改 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. 修补标签的可靠替代方法是使用 不可编辑、不可选择、none 大写、启用无滚动、没有显示水平和垂直指示器,没有反弹 UITextView
。
练习这个错误,并尝试各种解决方法:
► 在 GitHub and additional details on Swift Recipes 上找到此解决方案。