我想创建一个动态高度的UITableView标头。我在视图中有四个标签,并且必须根据每个UILabel中的内容调整标题的高度。我想要实现类似于这个图像的东西。 Sample image.
根据屏幕尺寸,标签的宽度将是动态的。 "类型"标签将覆盖屏幕的2/3左右,其余标签将在三个标签之间平均分配。根据屏幕尺寸,标签可以是多线的,我想根据标签的内容管理主视图的高度。
当我给标签赋予固定宽度约束时,我成功地能够管理高度,但我希望保持标签的宽度动态。这是一个UITableView标头。任何帮助将不胜感激。
答案 0 :(得分:0)
像这样的标题和设计就像tableViewCell一样创建一个customCell。
如何完成设计:
SMS EMAIL和PUSH NOTIFICATION被封装到一个stackView中,它已经自动布局了TYPE标签。
这是层次结构。
这是Type(2/3)的布局设计。自己准确计算。
这适用于stackView。
两者都是使用superView(即单元格)自动布局
<强> StackView:强>
和TYPE标签。
将此单元格插入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 。因为解释autolayout很棘手所以我只是分享了我的项目,这更容易理解。你可以从here结账
不使用StackView的输出如下:
2观点。为了更好地理解,已经给出了颜色。