UITableView在委托方法之后仅修改一个标题部分

时间:2014-12-10 09:50:41

标签: ios objective-c uitableview

我正在创建一个UITableView,其中更多部分为“已关闭”。当我点击一个部分,并找到解决方法时,我会使该部分爆炸显示该部分的行。我遇到的问题是我必须为标题设置动画以将其折叠到其宽度的一半。

这是我正在使用的代码

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    Sport *sport = [self.sportList objectAtIndex:section];

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, tableView.frame.size.width, SECTION_HEIGHT)];
    headerView.backgroundColor = [UIColor colorWithRed:31.0/255.0 green:59.0/255.0 blue:143.0/255.0 alpha:1.0];

    UILabel *sportTitle = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 2.0, tableView.frame.size.width, SECTION_HEIGHT-4)];
    sportTitle.textColor = [UIColor whiteColor];
    [headerView addSubview:sportTitle];

    UIButton *sportButton = [[UIButton alloc] initWithFrame:headerView.frame];
    [sportButton addTarget:self action:@selector(didSelectedButton:) forControlEvents:UIControlEventTouchUpInside];
    [sportButton setTitle:@"" forState:UIControlStateNormal];
    [sportButton setBackgroundColor:[UIColor clearColor]];
    sportButton.tag = section;
    [headerView addSubview:sportButton];

    return headerView;
}

这是选择器:

-(void)didSelectedButton:(UIButton *)_button
{
    if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectedSport:)])
    {
        [self.delegate didSelectedSport:sport];
    }
}

委托仅更新dataSource并调用reloadData,从而使部分爆炸/崩溃成为可能。但是现在我想为该部分的标题宽度设置动画,是否可能?感谢

编辑:我可以使用选择器中UIButton的属性superview修改标头,但是我必须在控制器绘制后执行此操作

1 个答案:

答案 0 :(得分:0)

尝试使用以下功能。将uibutton的超级视图设置为方法中的from视图。 创建具有所需宽度的另一个视图,并将其设置为在方法中查看。在选项中提供选择的动画。

[UIView transitionFromView:from
                    toView:to
                  duration:.5
                   options:UIViewAnimationOptionTransitionFlipFromBottom
                completion:^(BOOL finished) {

                }];