我无法让UILabel正确地换入UITableView's
tableHeaderView
。我的目标是使用UILabel
根据标签中的文本数量动态扩展UITableView's
标题视图的高度。
我试图遵循相同的方法,当UILabel
在一个简单的UIView
包装器中时,该方法有效。我的方法来自这个guide and associated project。我成功地重复了这个例子 - 我的切换按钮导致超级视图的高度在点击时扩展。不幸的是,我没有成功地在UITableView's
视图标题中实现它。
图表1:单个UIView Wrapper(有效)
如下所示(UIView
superview为绿色,UILabel
为灰色):
根据指南中的说明,我将UILabel's
封装视图子类化为layoutSubviews
的实现,调整preferredMaxLayoutWidth
,如下所示:
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat availableLabelWidth = self.label.frame.size.width;
self.label.preferredMaxLayoutWidth = availableLabelWidth;
[super layoutSubviews];
}
图表2:外部UIView包装(工作)
下一步,我已成功将UILabel
封装在另一个UIView
中,以验证我是否也可以展开外部UIView
。如下所示(外部UIView
为绿色,内部UIView
为白色,UILabel
为灰色):
外部UIView约束:
我使用了与上面列出的layoutSubviews
相同的方法。在此示例中,两者都封装UIViews
'调整高度以适合UILabel
。
图表3:表格视图标题(不起作用)
现在将此UILabel
示例滚动到表视图标题中。我遵循与图表2相同的方法,除了我的外UIView
是UITableView's
tableViewHeader
视图。如下所示(表格视图标题背景栗色,UIView
绿色,UILabel
灰色):
我将相同的layoutSubviews
代码应用于绿色UIView's
子类。
这次,当UILabel's
内容发生变化时,不会调整UILabel's
高度。 UILabel
及其超级视图的大小保持不变,文本被剪裁。
我还包含了一个示例项目,其中包含了此帖中描述的三个示例:https://github.com/nsso/flexible-table-header
有没有人知道我的UILabel's
大小没有调整tableViewHeader
的大小的原因,是否有任何我可以做的不同以确保我的UITableView's
标题视图的大小合适?