使用故事板,我为我的表格视图创建了一个自定义单元格,我还为它创建了一个包含所有属性的自定义类。
现在,使单元格高度动态化的最佳方法是什么,最好的方法在哪里?我应该在单元格的自定义类中执行此操作吗?或者在我的表格视图控制器中?
我想在自定义类中这样做会更有意义,但是我应该怎么做呢?填写特定标签后,应更改单元格的高度
使用故事板,我为我的表格视图创建了一个自定义单元格,我还为它创建了一个包含所有属性的自定义类。
现在,使单元格高度动态化的最佳方法是什么,最好的方法在哪里?我应该在单元格的自定义类中执行此操作吗?或者在我的表格视图控制器中?
我想在自定义类中这样做会更有意义,但是我应该怎么做呢?填写特定标签后,应更改单元格的高度
您无法从自定义绘图类更改单元格的高度。
您可以在仅具有 UITableView 的 viewController 中执行此操作。通过为所有单元格指定硬编码的行高,或使用
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
并在此处指定单元格的高度。如果您想为单元格设置不同的高度,您应该检查 indexpath.row 属性并返回所需的高度值。
如果您想更改已在屏幕单元格中绘制的高度,则必须重新加载该单元格以反映使用此更改:
使用以下代码
-(CGFloat)heightForText:(NSString *)str width:(int)width font:(UIFont *)font lineBreakMode:(NSLineBreakMode) lineBreakMode
{
CGSize textSize;
textSize = [str boundingRectWithSize:CGSizeMake(width, FLT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : font} context:nil].size;
return textSize.height;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.yourTable)
{
NSMutableDictionary *dict = [self.yourArray objectAtIndex:indexPath.row] ;
return [self heightForText:[dict valueForKey:@"reviewDescription"] width:300 font:[UIFont fontWithName:kAppRegularFont size:15.0] lineBreakMode:0]+75;
}
return 70;
}
将您的视图控制器设置为表视图的委托,然后在视图控制器中实现以下 UITableViewDelegate 方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
将这些行添加到您的“viewDidLoad”方法中
self.tableView.estimatedRowHeight = your height here
self.tableView.rowHeight = UITableViewAutomaticDimension;
不要将默认高度设置为委托
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
}