【问题标题】:Views not moving when UILabel's height grows当 UILabel 的高度增加时,视图不会移动
【发布时间】: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


    【解决方案1】:

    将此设置为您的 UILabel:

     yourUILabel.numberOfLines=0;
     yourUILabel.adjustsFontSizeToFitWidth=YES;
    

    立即尝试:)

    【讨论】:

    • 这会使字体大小调整以适应宽度;我想要的是标签的高度向下调整以适合文本,然后也将下面的正文标签向下推。
    【解决方案2】:

    如果您使用vfl 管理这样的标签的垂直约束:

     V:|-[myLable]-|
    

    改成这样:

     V:|[mylabel]|
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2019-06-15
      • 1970-01-01
      • 2017-12-03
      • 2014-11-02
      相关资源
      最近更新 更多