让我的问题可以理解,这里摘自我的代码:
[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再次等于原始高度。顺便说一句,原始高度在故事板中设置。
有人可以告诉我原因吗?我可以阻止这种行为吗?
以下是故事板的快照:
答案 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)