estimatedHeightForRowAtIndexPath最佳实践

时间:2015-11-02 11:43:11

标签: ios swift constraints

我有一个显示各种类型动态内容的UITableCell。

标签可以是1或2行,textViews具有不同的高度,图像具有不同的高度。

估算这些行的高度的最佳方法是什么?我可以创建计算标签和文本视图高度的函数。但是对于约束,我可以使出口和总和所有的高度常数吗?

2 个答案:

答案 0 :(得分:1)

如果您正确设置了自动布局。您不必自己计算常数。您只需设置两个属性(或在表视图委托中执行):

tableView.estimatedRowHeight

操作系统将为您检查正确的单元格高度。

如果您有几个不同的单元格,那么使其顺利运行的最佳方法是实现委托方法,而不是通过属性func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { // 1. get table view cell for indexPath // 2. check which cell type have you got // 3. return as closed estimated value for the cell type as you possible can. // Example //if cell type is my cell A return 80 // else if cell is B return 120, etc } 来实现,例如:

import statsmodels.api as sm
from statsmodels.formula.api import ols
ols_model = ols('Consumption ~ Disposable_Income', df).fit()

答案 1 :(得分:0)

也许它可以提供帮助

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSAttributedString *attrStr = [[NSAttributedString alloc] init];
height = [self calculateHeightForAttributeString:attrStr];
return height;
}




-(CGFloat)calculateHeightForAttributeString:(NSAttributedString *)attrStr {
 CGRect frame;
frame = [attrStr boundingRectWithSize:CGSizeMake(labelMaxWidth, MAXFLOAT)
                                          options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                                          context:nil];
return frame.size.height;  
}