2

我想创建一个具有动态高度的 UITableView 标头。我在视图中有四个标签,并且必须根据每个 UILabel 中的内容调整标题的高度。我想实现与此图像类似的东西。示例图像。

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

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

4

1 回答 1

0

像 tableViewCell 一样为 header 和设计制作一个 customCell。

在此处输入图像描述

设计是如何完成的:

SMS EMAIL 和 PUSH NOTIFICATION 被封装在一个 stackView 中,并且已经自动布局,带有 TYPE 标签。

这是层次结构。

在此处输入图像描述

这就是Type(2/3)的布局设计。自己准确计算。

在此处输入图像描述

这是针对stackView的。

在此处输入图像描述

两者都是带有 superView 的自动布局(即单元格)

堆栈视图:

在此处输入图像描述

和类型标签。

在此处输入图像描述

将此单元格作为 tableView 的 headerView 插入。

如何?

在 viewDidLoad 中:

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

在您各自的视图控制器中添加这两个功能。

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。因为解释自动布局很棘手,所以我只是分享了我的项目,这更容易理解。你可以从这里结帐

不使用 StackView 的输出如下:

2 意见采取。已给出颜色以便更好地理解。

在此处输入图像描述

于 2017-06-07T12:06:53.270 回答