我一直在努力用动画来移除一个tableview的页眉/页脚内容。我相信我可以对页眉内容本身调用removeFromSuperview,或者只是将页眉赋值为nil,但是我不知道如何动画化它。一个简单的动画块什么也做不了-我如何淡入/淡出一个视图(在这个例子中是一个标签)?
nwwlzxa71#
我写了一个如何使用动画块完全删除标题视图的示例。
[UIView beginAnimations:nil context:NULL]; [self.tableView setTableHeaderView:nil]; [UIView commitAnimations];
这里假设动画是在UITableViewController类内部调用的。简单地从超级视图中删除标题视图是不起作用的,因为表格视图不知道调整自己的大小来填充以前的标题视图。标题视图的设置会导致表格视图以动画方式刷新自己。如果这不起作用,请检查tableView示例的赋值。
UITableViewController
tableView
4sup72z82#
最后我得到了下面的简单解决方案,它为删除标题设置了动画效果。
[self.tableView beginUpdates]; self.tableView.tableHeaderView = nil; [self.tableView endUpdates];
我知道这是在WINSergey的回应中提到的,但我发现他的解释有点混乱。
bqucvtff3#
我发现以下两个选项都可以正常工作:备选案文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];
guz6ccqo4#
我遇到了同样的问题,我想控制如何删除头,这里是我的方法:在视图加载时:
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]; }];
g9icjywg5#
这是完美的工作“是”,我不关心动画
[myPrettyViewControllerInstance letUpdatePrettyViewNow]; [[self tableView] beginUpdates]; [[self tableView] setTableHeaderView:[myPrettyViewControllerInstance view]]; [[self tableView] endUpdates];
但如果我们不再需要它
[[self tableView] setTableHeaderView:nil];
这就是我们所需要的,真的(如果它没有淡出-检查的条件
我们不需要
[UIView beginAnimations:nil context:NULL]; [[self tableView] setTableHeaderView:nil]; [UIView commitAnimations];
诺普
[[self tableView] beginUpdates]; [[self tableView] setTableHeaderView:nil]; [[self tableView] endUpdates];
[[self tableView] setTableHeaderView:nil]; [[self tableView] reloadData];
诺奥。
k97glaaz6#
我不得不把2动画得到它的工作。
[UIView animateWithDuration:2.0f animations:^{ mylbl.alpha = 0.1 ; } completion:^(BOOL finished) { [UIView animateWithDuration:2.0f animations:^{ mylbl.alpha = 1.0 ; }]; }];
4szc88ey7#
如果有人这样做,我不得不混合所有的答案,它在一个UITableView内正常工作。简单地做beginUpdates和endUpdates并没有为我添加动画。这允许页脚被删除,单元格下降很好地与动画,而不是立即与一个挺举。
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() }
7条答案
按热度按时间nwwlzxa71#
我写了一个如何使用动画块完全删除标题视图的示例。
这里假设动画是在
UITableViewController
类内部调用的。简单地从超级视图中删除标题视图是不起作用的,因为表格视图不知道调整自己的大小来填充以前的标题视图。标题视图的设置会导致表格视图以动画方式刷新自己。
如果这不起作用,请检查
tableView
示例的赋值。4sup72z82#
最后我得到了下面的简单解决方案,它为删除标题设置了动画效果。
我知道这是在WINSergey的回应中提到的,但我发现他的解释有点混乱。
bqucvtff3#
我发现以下两个选项都可以正常工作:
备选案文1
备选案文2
guz6ccqo4#
我遇到了同样的问题,我想控制如何删除头,这里是我的方法:
在视图加载时:
然后,当您需要删除标题时:
g9icjywg5#
这是完美的工作“是”,我不关心动画
但如果我们不再需要它
这就是我们所需要的,真的(如果它没有淡出-检查的条件
我们不需要
诺普
诺普
诺奥。
k97glaaz6#
我不得不把2动画得到它的工作。
4szc88ey7#
如果有人这样做,我不得不混合所有的答案,它在一个
UITableView
内正常工作。简单地做beginUpdates
和endUpdates
并没有为我添加动画。这允许页脚被删除,单元格下降很好地与动画,而不是立即与一个挺举。