微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IOS – 自我调整细胞问题

我正面临使用自动布局自动调整单元格大小的问题.我的目标是实现一个看起来像这样的表:
| Title_label (time)      $price |
|                                |
|Some long description. More     |
|description.                    |
|                                |

标题很长时,它应该如下所示:

| This title is (time)    $price |
| really long                    |
|                                |
|Some long description. More     |
|description.                    |
|                                |

因此,当标题变得更大时,只要时间和价格有8个点空间,它就会将时间标签推向右侧.如果它更大,它应该换到下一行.

我在表格视图之前已经完成了自定尺寸单元格,但只有一个扩展标签,而不是两个.

我已经实现了行的自动高度:

self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100

这就是我的约束的样子:

|     8px
|8px title 8px time >=8px       price|
|     8px                            |
|8px description                  8px|
|     8px                            |

价格时间和头衔之间也存在最重要的一致性.

我将标题和描述的行号设置为0.
我将时间和价格的抗压力设置为1000(因为标题与它们重叠).

但是标题标签不会换行到下一行.它结束于….更多描述标签也太小了.当我滚动表时,desription的高度是固定的.

我在尝试返回cell之前尝试添加cell.layoutIfNeeded().然后单元格布局搞砸了(标题被剪裁),但是当我滚动tV时一切正常.

有任何想法吗?

编辑:
这是因为标题标签旁边是其他标签,它不知道什么时候应该换行?

我试过了

override func layoutSubviews() {
        self.nameLabel.preferredMaxLayoutWidth -= (durationLabel.frame.width + priceLabel.frame.width + 16)
        super.layoutSubviews()
    }

告诉标题标签它的最大宽度是多少,但它会让事情变得混乱.

解决方法

就像你一样,我已经将标题和描述的行设置为0,我已经设置了你的单元格:
|     8px
|8px title 8px time >=8px       price|
|     8px                            |
|8px description                  8px|
|     8px                            |

然后,我设置了压缩和拥抱属性

标题

>拥抱:H:251,V:25​​2
>压缩:H:999,V:1000

时间:

>拥抱:H:253,V:25​​1
>压缩:H:1000,V:750

价钱:

>拥抱:H:252,V:750

描述:

>拥抱:H:251,V:25​​1
>压缩:H:750,V:999

一切都按预期工作

原文地址:https://www.jb51.cc/iOS/328478.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐