带标签的动态UITableViewHeader视图

时间:2017-02-20 10:30:26

标签: ios objective-c iphone uitableview nslayoutconstraint

我有一个UIView in。xib文件,我在运行时加载并将其设置为UITableView的tableHeaderView。我的xib文件中有一个UILabel,它可以在底部以固定UIButton动态增长。

如果我将UILabel的宽度设置为固定宽度,则可以正常工作。

enter image description here

如果我在UILabel设置领先/尾随,那么它不起作用:( enter image description here

我正在使用以下代码来处理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;
    }

}

}

任何人都可以解释为什么设置领先/尾随不起作用? 我的约束视图就像(没有固定宽度):

enter image description here

1 个答案:

答案 0 :(得分:0)

在viewDidLayoutSubviews结束时调用。

[viewWithLabelAndButton setNeedLayout]; [viewWithLabelAndButton layoutIfNeeded];