为什么reloadData会重置UITableView的高度?

时间:2013-01-30 14:32:20

标签: ios uitableview height reloaddata

让我的问题可以理解,这里摘自我的代码:

[UIView animateWithDuration:0.5 animations:^{

    taskTable.frame = CGRectMake(
        taskTable.frame.origin.x,
        taskTable.frame.origin.y,
        taskTable.frame.size.width,
        127
    );

} completion:^(BOOL finished) {

    [self.taskTable reloadData];

}];

这是基本情况:taskTable是一个UITableView,它集成在UIViewController中。第一个块正常工作,taskTable在高度上减少0.5秒。

我的问题从完成块开始:在重新加载taskTable之后,taskTable再次等于原始高度。顺便说一句,原始高度在故事板中设置。

有人可以告诉我原因吗?我可以阻止这种行为吗?

以下是故事板的快照:

enter image description here

1 个答案:

答案 0 :(得分:1)

给问题一个答案:

你可以禁用自动布局来解决问题,但这不是最好的方法。

我如何解决问题:我定义了superview顶部和tableView之间的约束。之后我在代码中添加了以下内容(taskTableTop就是那个约束):

[self.view removeConstraint:taskTableTop]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:taskTable
                                                      attribute:NSLayoutAttributeTop
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:jobDesc
                                                      attribute:NSLayoutAttributeBottom
                                                     multiplier:0
                                                       constant:size.height + 38]];

我不知道是否有更简单的方法可以做到这一点。

如果有人准备好了更好的答案,请随时告诉我(我们); o)