使用tableview标题中的展开文本展开标签和视图

时间:2017-11-25 08:36:10

标签: ios objective-c uitableview header

我制作了一个可扩展且可折叠的桌面视图。如果部分被挖掘,它们会扩展,如果它们已经扩展,它们会崩溃。

对于部分事情,我已经采取了一个观点。在UIView之外,有标签和标签上有轻拍手势。它工作正常。现在,问题是标签和视图的大小是固定的,但实际上我希望标签扩展,如果标签内的文字超过标签的高度。但是,我甚至无法实现它的几个努力。亲自检查下面的代码,并给出一些进一步的指示。

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

    UIView *sectionView=[[UIView alloc]initWithFrame:CGRectMake(30, 5,self.expandableTableView.frame.size.width-30,40)];
    sectionView.tag=section;
    UILabel *viewLabel=[[UILabel alloc]initWithFrame:CGRectMake(10,5,sectionView.frame.size.width-60, 40)];
    imgView=[[UIImageView alloc]initWithFrame:CGRectMake(viewLabel.frame.size.width+10,10,30, 30)];
    imgView.image = [UIImage imageNamed:@"down.png"];
    viewLabel.backgroundColor=[UIColor clearColor];
    viewLabel.textColor=[UIColor darkTextColor];
    viewLabel.font=[UIFont systemFontOfSize:15];
    viewLabel.text=[NSString stringWithFormat:@"List of %@",[_sectionArray objectAtIndex:section]];
    [sectionView addSubview:viewLabel];
    [sectionView addSubview:imgView];
    /********** Add a border with Section view *******************/

    sectionView.layer.borderWidth = 1;
    sectionView.layer.borderColor =  [[UIColor grayColor] CGColor];
    sectionView.layer.cornerRadius = 5;


    /********** Add UITapGestureRecognizer to SectionView   **************/

    UITapGestureRecognizer  *headerTapped   = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sectionHeaderTapped:)];
    [sectionView addGestureRecognizer:headerTapped];

    return  sectionView;


}

任何帮助将不胜感激。谢谢提前

1 个答案:

答案 0 :(得分:0)

您的答案 - “但实际上,如果标签内的文字超过标签的高度,我希望标签展开”

[viewLabel sizeToFit]
实际上你正试图返回一个视图。使用自动布局在故事板中设计这种视图要容易得多。

要折叠或展开tableview,您可以采取其他方式。您可以在表格单元格中设置此标签。然后,您可以动态创建单元格,将单元格插入数组中,使用数组重新加载tableview。使用

设置高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

当您调用didDeselectRowAtIndexPath时,将取消选择该单元格。您可以使用heightForRowAtIndexPath返回高度0。

我希望这就是你在寻找的东西。