动画表视图节标题

Spa*_*Dog 0 iphone objective-c uitableview ios

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

此容器视图由返回

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
Run Code Online (Sandbox Code Playgroud)

一切都很好.

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

没有任何事情发生,标题继续不可见.

我试图添加:

[self.tableView beginUpdates]; //and
[self.tableView beginUpdates];
Run Code Online (Sandbox Code Playgroud)

在提到的动画之前和之后,没有成功.

在我看来,表头不更新并继续不可见.

Rap*_*sso 5

首先,NSLog两个viewDidAppear和两个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;

}
Run Code Online (Sandbox Code Playgroud)

只需在表格返回viewHeader时调用动画.