我正在努力通过动画动画删除tableview的页眉/页脚内容。我相信我可以在标题内容本身上调用removeFromSuperview,或者只是将标题分配给nil,但我不知道如何设置动画。一个简单的动画块什么都不做 - 如何淡入/淡出视图(在这种情况下是一个标签)?
答案 0 :(得分:24)
我写了一个如何使用动画块完全删除标题视图的示例。
[UIView beginAnimations:nil context:NULL];
[self.tableView setTableHeaderView:nil];
[UIView commitAnimations];
当然,这假定在UITableViewController类内部调用此动画。
简单地从超级视图中删除标题视图不起作用,因为表视图不知道调整自身大小以填充以前的标题视图。标题视图的设置使表视图以动画方式自行刷新。
如果这不起作用,请检查tableView实例的任务。
答案 1 :(得分:8)
我最终得到了以下简单的解决方案。它动画删除标题。
[self.tableView beginUpdates];
self.tableView.tableHeaderView = nil;
[self.tableView endUpdates];
我意识到在WINSergey的回复中提到了这一点,但我发现他的解释有点令人困惑。
答案 2 :(得分:1)
我发现以下两个选项都可以正常工作:
选项1
[UIView animateWithDuration:0.15
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^{deleteLabel.alpha = 0;}
completion:nil];
选项2
[UIView beginAnimations:nil context:nil];
deleteLabel.alpha = 0.0;
[UIView commitAnimations];
答案 3 :(得分:1)
我有同样的问题,我想控制标题的删除方式,这是我的方法:
在ViewDidLoad:
UIView *transView = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, 320.f, 200.f)];
transView.backgroundColor = [UIColor clearColor];
self.headerView = transView;
[transView release];
[self.tableView setTableHeaderView:self.headerView];
然后当你需要删除标题时:
[UIView animateWithDuration:.3f
delay:.0f
options: UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.headerView.frame = CGRectMake(0.0f, 0.0f, 320.f, 0.0f);
}
completion:^(BOOL finished) {
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:section] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}];
答案 4 :(得分:0)
这是完全“按原样”工作,我不关心动画
[myPrettyViewControllerInstance letUpdatePrettyViewNow];
[[self tableView] beginUpdates];
[[self tableView] setTableHeaderView:[myPrettyViewControllerInstance view]];
[[self tableView] endUpdates];
但如果我们不再需要它
[[self tableView] setTableHeaderView:nil];
这就是我们所需要的一切,真的(如果不是淡出的话 - 检查
的条件 [[self tableView] setTableHeaderView:nil];
,我们不需要
[UIView beginAnimations:nil context:NULL];
[[self tableView] setTableHeaderView:nil];
[UIView commitAnimations];
NOP
[[self tableView] beginUpdates];
[[self tableView] setTableHeaderView:nil];
[[self tableView] endUpdates];
NOP
[[self tableView] setTableHeaderView:nil];
[[self tableView] reloadData];
野应..
答案 5 :(得分:0)
我必须放置2个动画才能让它正常工作。
[UIView animateWithDuration:2.0f animations:^{
mylbl.alpha = 0.1 ;
} completion:^(BOOL finished) {
[UIView animateWithDuration:2.0f animations:^{
mylbl.alpha = 1.0 ;
}];
}];
答案 6 :(得分:0)
如果有人这样做,我必须在UITableView
内混合所有答案,以使其正常工作。仅仅做beginUpdates
和endUpdates
并没有为我添加动画。这样一来,便可以删除页脚,并且通过动画很好地放下单元格,而无需立即将其移开。
private func updateFooter(view : UIView?, size : CGFloat){
UIView.beginAnimations(nil, context: nil)
mainTableView.beginUpdates()
mainTableView.tableFooterView = view
mainTableView.tableFooterView?.frame.size.height = size
mainTableView.endUpdates()
UIView.commitAnimations()
}