在UITableView中使用动态标签宽度管理自动标题高度

问题描述:

我想创建一个具有动态高度的UITableView标题。我在视图中有四个标签,标题的高度必须根据每个UILabel中的内容进行调整。我想实现类似于这个图像的东西。 Sample image.在UITableView中使用动态标签宽度管理自动标题高度

这里标签的宽度根据屏幕尺寸是动态的。 “类型”标签将覆盖大约2/3的屏幕,其余的将在三个标签之间平均分配。这里根据屏幕尺寸标签可以是多行,我想根据标签的内容来管理主视图的高度。

当我给标签固定宽度约束时,我能够成功地管理高度,但我想保持标签的宽度是动态的。这是一个UITableView头。任何帮助将非常感激。

+0

尝试此链接作为参考,https://*.com/a/43556505/3236890 在这里,我已经提供了Cell解决方案,你可以做同样的,你需要科头球回传部分+ 1,并为单元格的第一节返回数字0, 对于节标题的动态高度,使用高度的部分和估计的高度部分标题UItableViewautomaticdimension链接单元格相同,希望这会有所帮助。 – dip

+0

如果我的回答很有帮助,希望你也会接受。 :) –

+0

@dip每当我使用前导/尾随或比例宽度约束时,标签的宽度确实会增加,但标签的高度不会随着内容的增加而增加。如果文本不符合给定宽度,则需要增加标签和视图的高度。谢谢回复。 –

像这样为header和design设计一个customCell就像tableViewCell一样。

enter image description here

设计是怎么做的:

SMS电子邮件和推送通知被封装成stackView并已自动布局类型的标签。

这是层次结构。

enter image description here

准确自行

这是类型(2/3)的布局设计.Calculate。

enter image description here

这是stackView。

enter image description here

两者都与上海华自动版式(即小区)

StackView:

enter image description here

和TYPE标签。

enter image description here

插入该小区作为您的tableView的headerView。

如何?

在viewDidLoad中:

tableView.register(UINib.init(nibName: String(describing: TableHeader.self), bundle: nil), forCellReuseIdentifier: "headerCell") 

在respectivew视图控制器添加这两功能。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! TableHeader 
    return cell 
} 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 58 
} 

这里是输出:

enter image description here

对于iOS 8:

StackView不存在,所以我们需要使用的UIView instead.As解释自动布局是棘手所以我只是分享了我的项目,这更容易理解。您可以结账从here

未使用StackView的输出如下:

2已观看次数。为了更好的理解,已经给出了颜色。

enter image description here

+0

感谢您的回复。使用StackView是一个好主意,但我也支持iOS 8,所以你可以提出一个替代方案吗? –

+0

是的只是用视图替换堆栈。并在该视图中制作每个标签的三分之一,并使用乘法器与超级视图进行互动 –

+0

谢谢,还有一件事,我想要管理视图的高度。假设文本“推送通知”更改为“推送通知非常长的文本”,标签高度确实增加,但内容视图高度也应该相应增加,请参阅您的iOS 8解决方案中的相同内容。再次感谢非常感谢。 –