• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:49:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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



Best Answer-推荐答案


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

enter image description here

设计是如何完成的:

SMS EMAIL 和 PUSH NOTIFICATION 被封装在一个 stackView 中,并带有 TYPE 标签。

这是层次结构。

enter image description here

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

enter image description here

这是用于stackView的。

enter image description here

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

堆栈 View :

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")

在你各自的 View Controller 中添加这两个函数。

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

不使用 StackView 的输出如下:

已拍摄 2 次。已给出颜色以便更好地理解。

enter image description here

关于ios - 在 UITableView 中使用动态标签宽度管理自动标题高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44411349/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap