我在UITableView
内的UIViewController
添加了UIView
。表视图具有约束以适合其父视图的大小。视图对其位置和大小有约束。如果我为此视图的大小设置动画,则表格视图会显示新行,但即将显示的新元素似乎从其初始(未设置)位置飞来飞去。例如,UITableViewCell
的右侧详细指示符从单元格的左边缘飞过,文本标签位于稍微不同的位置,等等。
我像这样做动画:
[self.tableView reloadData];
[UIView animateWithDuration:0.3f animations:^{
self.tableViewHeightConstraint.constant = blah;
[self.view layoutIfNeeded];
}];
如您所见,数据重新加载发生在动画块之前。播放完动画后,更改视图大小不会再对表格视图的内容进行动画处理(我猜它确实如此,但一切都在他们的位置。)
如何阻止动画元素并保留帧的动画?