【发布时间】:2016-01-09 05:01:16
【问题描述】:
我有一个带有自定义单元格的 UITableView(具有自动高度)。在这些单元格中,我有两个 UILabel,一个标题和一个正文。我将标题设置为最多 3 行,正文设置为无限行。
加载单元格时(通过tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell),我将标题设置为“等待数据”,将正文设置为“Hello world”。此时,我发送了一个网络请求以获取一些信息,当请求返回时,我然后更新标题 UILabel。
但是,似乎当新文本导致 UILabel 的高度发生变化时(例如,文本需要显示 2 或 3 行),就会发生奇怪的事情。奇怪的是,要么标题增长并压缩了正文标签,要么标题没有增长,而是保持一行,椭圆形/截断。
如果我滚动并向后滚动,导致重新创建单元格,则不会出现此问题。我假设这是因为我缓存了网络响应,并且在创建单元格时,如果响应已被缓存,我直接将标题设置为响应。基于此,我认为当我修改标题标签时可能不会再次调用自动布局。
初始单元格:
网络响应后:
标题不换行的情况:
标题换行但压缩细节标签的情况
在生成的两个单元格中,标题还延伸/压缩了时间标签。
发生这种情况时,我是否应该调用某种方法来重新布局我的单元格?我的约束可能不正确吗?
【问题讨论】:
标签: ios swift autolayout uikit