Autolayout UILabel高度在第二个视图外观上更改

时间:2014-04-10 09:00:38

标签: ios objective-c uilabel uitableview autolayout

我在TableHeaderView(see this question)中有一个动态UILabel,一切都很好,但如果我将标签的文本设置为nil@"",标签会保留文本所在的高度大小。

我改变了我{m} presenting modally的另一个viewController中的文字。所以我想通过3个步骤向您展示:

原始状态

State one

将文字设置为@""

在这一步中,我提出了viewController来删除文本,然后我解除了viewController以返回到这个视图。

State two

重新显示此视图

所以我必须打开编辑viewController才能再次关闭它。然后就像我想要它......:

State three

任何想法为什么?我在viewWillAppear方法中重新调整了TableViewHeader的大小:

- (void)resizeTableViewHeader
{
    //GET THE SIZE OF THE CONTAINER
    CGSize fittingSize = [self.header systemLayoutSizeFittingSize: UILayoutFittingCompressedSize];
    self.header.frame = CGRectMake(0, 0, 320, fittingSize.height);
    self.tableView.tableHeaderView = self.header;
}

知道为什么我要两次访问View吗?

2 个答案:

答案 0 :(得分:0)

可能需要在某处更新约束,或layoutIfNeeded。其他解决方案可以在我的其他answer中找到。

答案 1 :(得分:-1)

您应该实现uitableViewDelegate方法并计算标题高度。

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    CGFloat height = //Calculate the dynamic height.
    return height;
}