【问题标题】:Dynamic UITableViewHeader View with Label带标签的动态 TableView 标题视图
【发布时间】: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 我遇到了确切的情况。我已经通过正确设置约束来解决它。我遇到了一个问题,因为为按钮添加了错误的约束为“使用超级视图垂直居中”。请检查一次您的约束是否正确

标签: ios objective-c iphone uitableview nslayoutconstraint


【解决方案1】:

在 viewDidLayoutSubviews 结束时调用。

[viewWithLabelAndButton setNeedLayout]; [viewWithLabelAndButton layoutIfNeeded];

【讨论】:

  • 我想你以编程方式创建 UIView,因为可能是这种情况 - xib 的错误,但我看到你的约束安装正确。另一个尝试的案例 - 在 xib 中增加超级视图 UILabel 的高度。苹果在 xib 中使用了有趣的机制,并且视图每次都不会得到很好的大小。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 2012-10-11
  • 2011-05-16
相关资源
最近更新 更多