动画表视图节标题

时间:2011-07-01 01:52:33

标签: iphone ios objective-c uitableview

我已创建此表视图节标题。它基本上是一个UIView容器,我将所有元素包装在该节标题上。

此容器视图由

返回
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

一切正常。

现在我希望标题在淡入时显示,就像表格一样。所以,我最初为容器声明alpha = 0,然后在viewDidAppear:上执行此操作(啊,此表位于正在出现的视图控制器内)。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [UIView animateWithDuration:1.0
         animations:^{
             [self.tableHeader setAlpha:1.0f];
     }];

}

没有任何反应,标题继续不可见。

我试图添加:

[self.tableView beginUpdates]; //and
[self.tableView beginUpdates];

在上述动画之前和之后,没有成功。

在我看来,表头没有更新,并且继续不可见。

1 个答案:

答案 0 :(得分:5)

首先,在NSLogviewDidAppear

上加tableView:viewForHeaderInSection:

你会看到viewDidAppear首先执行,一旦tableView有异步加载,你就不知道什么时候会调用viewForHeaderInSection

以下是一个解决方法:

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    _tableHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
    _tableHeader.backgroundColor = [UIColor redColor];
    _tableHeader.alpha = 0;

    [UIView animateWithDuration:1.0
                 animations:^{
                     [_tableHeader setAlpha:1.0f];
                 }];

    return _tableHeader;

}

当表格返回viewHeader时,只需调用动画即可。