我有一个表格视图,按下按钮时我会动画到新位置。它覆盖了底部屏幕的一小部分,然后按下按钮调用一种方法,使其覆盖大约一半的屏幕。这样用户就可以从表格视图中选择一个文件。
然而,似乎当我调用reloadData时,表视图会移回原来的位置,我想阻止它发生,这样用户不需要每次都按下按钮(例如删除文件,重命名文件或向表视图添加新文件。)
我有什么想法可以做到这一点?
我已经包含了代码。文件IBAction是按下按钮时发生的事情。
-(IBAction)file:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
if (self.tableView.frame.origin.y == 457) {
[self tableAppear];
}
else {
[self tableDisappear];
}
}
-(void)tableDisappear {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
if ([[UIScreen mainScreen] bounds].size.height == 568) { [self.tableView setCenter:CGPointMake(160, 545)];
}
else { [self.tableView setCenter:CGPointMake(160, 545)];
}
[UIView commitAnimations];
}
-(void)tableAppear {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
if ([[UIScreen mainScreen] bounds].size.height == 568) { [self.tableView setCenter:CGPointMake(160, 390)];
}
else { [self.tableView setCenter:CGPointMake(160, 390)];
}
[UIView commitAnimations];
}
答案 0 :(得分:4)
这很可能是自动布局的结果(当需要重新绘制屏幕时,所有视图将恢复到由其约束而不是您设置的任何帧确定的位置)。您可以关闭自动布局以查看是否存在问题。如果要使用自动布局,则需要使用约束而不是设置视图来移动或调整视图大小。