带标签的动态 TableView 标题视图
Posted
技术标签:
【中文标题】带标签的动态 TableView 标题视图【英文标题】:Dynamic UITableViewHeader View with Label 【发布时间】:2017-02-20 10:30:25 【问题描述】:我在.xib
文件中有一个UIView
,我在运行时加载它并将其设置为UITableView
的tableHeaderView。我的 xib 文件中有一个UILabel
,它可以动态增长,底部固定为UIButton
。
如果我将UILabel
的宽度设置为固定宽度,它会起作用。
如果我在UILabel
上设置前导/尾随,那么它不起作用:(
我正在使用下面的代码来处理 headerView 的高度
-(void)viewDidLayoutSubviews
[super viewDidLayoutSubviews];
// Dynamic sizing for the header view
if (table.tableHeaderView)
UIView *headerView = table.tableHeaderView;
float height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect headerFrame = headerView.frame;
// If we don't have this check, viewDidLayoutSubviews() will get
// repeatedly, causing the app to hang.
if (height != headerFrame.size.height)
headerFrame.size.height = height;
headerView.frame = headerFrame;
table.tableHeaderView = headerView;
谁能解释为什么设置前导/尾随不起作用? 我的约束视图是这样的(没有固定宽度):
【问题讨论】:
您是否为标签设置 numberOfLines = 0? 显然有效。首先添加您的约束,然后只有我们才能确定问题所在。 你能展示你的整个代码吗? @VishalSonawane 是的。约束已经存在,添加了图像。我的班级没有更多的代码,只有另外一种方法可以将文本设置为标签。 嗨@Husyn 我遇到了确切的情况。我已经通过正确设置约束来解决它。我遇到了一个问题,因为为按钮添加了错误的约束为“使用超级视图垂直居中”。请检查一次您的约束是否正确 【参考方案1】:在 viewDidLayoutSubviews 结束时调用。
[viewWithLabelAndButton setNeedLayout]; [viewWithLabelAndButton layoutIfNeeded];
【讨论】:
我想你以编程方式创建 UIView,因为可能是这种情况 - xib 的错误,但我看到你的约束安装正确。另一个尝试的案例 - 在 xib 中增加超级视图 UILabel 的高度。苹果在 xib 中使用了有趣的机制,并且视图每次都不会得到很好的大小。祝你好运!以上是关于带标签的动态 TableView 标题视图的主要内容,如果未能解决你的问题,请参考以下文章
具有动态高度的自定义视图作为 UITableView 标题 ios xcode
动态增加 UILabel & TableView Cell 的高度?
Calendar Kal:如何动态刷新 tableview?