1

为了让我的问题可以理解,这里是我的代码的摘录:

[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再次等于原始高度。顺便说一下,故事板中设置了原始高度。

有人可以告诉我这样做的原因吗?我可以防止这种行为吗?

这是故事板的快照:

在此处输入图像描述

4

1 回答 1

1

给这个问题一个答案:

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

我如何解决这个问题:我在超级视图的顶部和 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)

于 2013-01-30T18:25:47.650 回答