Autolayout UILabel在第二视图出现时高度发生变化

我在TableHeaderView中有一个dynamic的UILabel( 见这个问题 ),一切都没问题 ,但是如果我把标签的文本设置为nil或者@""那么标签就会保持文本的高度在。

我正在改变我以presenting modally的不同viewController中的文本。 所以我想通过3个步骤展示给你:

原始状态

说一个

将文本设置为@""

在这一步中,我介绍了viewController删除文本,然后closuresviewController回到这个视图。

陈述两个

重新出现这个视图

所以我必须打开编辑视图控制器才能再次解雇它。 然后就像我想要..:

州三

任何想法为什么? 我在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; } 

任何想法,为什么我必须访问两次查看?

也许它需要约束更新某处,或layoutIfNeeded 。 其他解决scheme可以在我的其他答案中find。

您应该实施tableViewDelegate方法并计算标题高度。

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