UILabel文本环绕在UITableView标头中

时间:2014-10-13 06:58:32

标签: ios objective-c iphone uitableview autolayout

我无法让UILabel正确地换入UITableView's tableHeaderView。我的目标是使用UILabel根据标签中的文本数量动态扩展UITableView's标题视图的高度。

我试图遵循相同的方法,当UILabel在一个简单的UIView包装器中时,该方法有效。我的方法来自这个guide and associated project。我成功地重复了这个例子 - 我的切换按钮导致超级视图的高度在点击时扩展。不幸的是,我没有成功地在UITableView's视图标题中实现它。

图表1:单个UIView Wrapper(有效)

如下所示(UIView superview为绿色,UILabel为灰色): Exhibit 1 Constraints

根据指南中的说明,我将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为灰色):

Exhibit 2 Inner Constraints

外部UIView约束: Exhibit 2 Outer Constraints

我使用了与上面列出的layoutSubviews相同的方法。在此示例中,两者都封装UIViews'调整高度以适合UILabel

图表3:表格视图标题(不起作用)

现在将此UILabel示例滚动到表视图标题中。我遵循与图表2相同的方法,除了我的外UIViewUITableView's tableViewHeader视图。如下所示(表格视图标题背景栗色,UIView绿色,UILabel灰色):

Exhibit 3 Constraints

我将相同的layoutSubviews代码应用于绿色UIView's子类。

这次,当UILabel's内容发生变化时,不会调整UILabel's高度。 UILabel及其超级视图的大小保持不变,文本被剪裁。

我还包含了一个示例项目,其中包含了此帖中描述的三个示例:https://github.com/nsso/flexible-table-header

有没有人知道我的UILabel's大小没有调整tableViewHeader的大小的原因,是否有任何我可以做的不同以确保我的UITableView's标题视图的大小合适?

0 个答案:

没有答案