获取 UITableView 动态高度的最佳方法是啥?

Posted

技术标签:

【中文标题】获取 UITableView 动态高度的最佳方法是啥?【英文标题】:what is the best way to get dynamic height of UITableView?获取 UITableView 动态高度的最佳方法是什么? 【发布时间】:2016-03-01 10:11:12 【问题描述】:

我正在以编程方式创建 UITableView。我根据内容保持单元格大小动态。所以最后我想通过使用 tblPackage.rowHeight 检查 tableview 高度(最终是单元格大小乘以单元格数)大于屏幕高度。我在 cellForRowAtIndexPath 中计算 tblPackage.rowHeight。但是我没有在代码中获得动态行高,因为在执行此代码后会调用 tableview 委托方法。这是我的工作:

tblPackage = [[UITableView alloc] initWithFrame:CGRectMake(5, 50.5, viewPackage.frame.size.width - 10, viewPackage.frame.size.height -70) style:UITableViewStylePlain];

 [viewPackage addSubview:tblPackage];
 tblPackage.delegate = self;
 tblPackage.dataSource = self;

[tblPackage setFrame:CGRectMake(tblPackage.frame.origin.x, tblPackage.frame.origin.y, tblPackage.frame.size.width,(tblPackage.rowHeight * ([arrayTiers count])))];


    NSLog(@"screen height: %f",SCREEN_HEIGHT);
    if (tblPackage.frame.origin.y + 70 + tblPackage.frame.size.height > SCREEN_HEIGHT - 11)
    
        if ([[[arrayCatInfo objectAtIndex:segIndex] valueForKey:@"allow_skip"] isEqualToString:@"true"])
        
            UIButton *btnSkipPackage = [[UIButton alloc]initWithFrame:CGRectMake(15, tblPackage.frame.size.height + 45 + 50.5, viewPackage.frame.size.width - 30, 35)];
            btnSkipPackage.backgroundColor = [UIColor lightGrayColor];
            [btnSkipPackage setTitle:[NSString stringWithFormat:@"Opt out of %@", [[arrayCatInfo objectAtIndex:segIndex] valueForKey:@"name"]] forState:UIControlStateNormal];
            [btnSkipPackage addTarget:self action:@selector(skipCategory:) forControlEvents:UIControlEventTouchUpInside];
            [viewPackage addSubview:btnSkipPackage];

            CGRect frameRect = viewPackage.frame;
            frameRect.size.height = SCREEN_HEIGHT - 6 - 70;

            viewPackage.frame = frameRect;

        
        else
        
            [tblPackage setFrame:CGRectMake(tblPackage.frame.origin.x, tblPackage.frame.origin.y, tblPackage.frame.size.width, SCREEN_HEIGHT - 11 - 70 - 50.5)];

            CGRect frameRect = viewPackage.frame;
            frameRect.size.height = SCREEN_HEIGHT - 6 - 70;

            viewPackage.frame = frameRect;

            tblPackage.scrollEnabled = TRUE;
        
    

【问题讨论】:

你的 ios 版本目标是什么? 【参考方案1】:

对于 TableviewCell 动态高度

设置

_tableView.estimatedRowHeight = 100.0;
_tableView.rowHeight = UITableViewAutomaticDimension;

https://***.com/a/35055320/5085393

【讨论】:

您能否更具体地了解这些行的作用? UITableViewAutomaticDimension 会给我每个单元格的行高吗?因为我在使用 tableview.rowHeight 条件后调用的 cellForRowAtIndexPath 中计算单元格大小 UITableViewAutomaticDimension 会根据单元格内容返回每一行的高度

以上是关于获取 UITableView 动态高度的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

获取UITableView每一行的高度

我想要动态获取 uitableview 总高度,而不是 uitableviewcell,

自动布局动态大小 uitableview 单元格的最佳方法是啥

UITableView 自定义单元格高度未正确管理 swift 中的动态约束

如何动态设置 UITableView 的高度?

如何从动态 UITableView 单元格中获取 UILabel 的大小?