在UITableView中使用动态标签宽度管理自动标题高度
我想创建一个具有动态高度的UITableView标题。我在视图中有四个标签,标题的高度必须根据每个UILabel中的内容进行调整。我想实现类似于这个图像的东西。 Sample image.在UITableView中使用动态标签宽度管理自动标题高度
这里标签的宽度根据屏幕尺寸是动态的。 “类型”标签将覆盖大约2/3的屏幕,其余的将在三个标签之间平均分配。这里根据屏幕尺寸标签可以是多行,我想根据标签的内容来管理主视图的高度。
当我给标签固定宽度约束时,我能够成功地管理高度,但我想保持标签的宽度是动态的。这是一个UITableView头。任何帮助将非常感激。
像这样为header和design设计一个customCell就像tableViewCell一样。
设计是怎么做的:
SMS电子邮件和推送通知被封装成stackView并已自动布局类型的标签。
这是层次结构。
准确自行这是类型(2/3)的布局设计.Calculate。
这是stackView。
两者都与上海华自动版式(即小区)
StackView:
和TYPE标签。
插入该小区作为您的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
}
这里是输出:
对于iOS 8:
StackView不存在,所以我们需要使用的UIView instead.As解释自动布局是棘手所以我只是分享了我的项目,这更容易理解。您可以结账从here
未使用StackView的输出如下:
2已观看次数。为了更好的理解,已经给出了颜色。
感谢您的回复。使用StackView是一个好主意,但我也支持iOS 8,所以你可以提出一个替代方案吗? –
是的只是用视图替换堆栈。并在该视图中制作每个标签的三分之一,并使用乘法器与超级视图进行互动 –
谢谢,还有一件事,我想要管理视图的高度。假设文本“推送通知”更改为“推送通知非常长的文本”,标签高度确实增加,但内容视图高度也应该相应增加,请参阅您的iOS 8解决方案中的相同内容。再次感谢非常感谢。 –
尝试此链接作为参考,https://*.com/a/43556505/3236890 在这里,我已经提供了Cell解决方案,你可以做同样的,你需要科头球回传部分+ 1,并为单元格的第一节返回数字0, 对于节标题的动态高度,使用高度的部分和估计的高度部分标题UItableViewautomaticdimension链接单元格相同,希望这会有所帮助。 – dip
如果我的回答很有帮助,希望你也会接受。 :) –
@dip每当我使用前导/尾随或比例宽度约束时,标签的宽度确实会增加,但标签的高度不会随着内容的增加而增加。如果文本不符合给定宽度,则需要增加标签和视图的高度。谢谢回复。 –