根据单元格OBjective-C中的标签文本(动态)增加单元格高度
Posted
技术标签:
【中文标题】根据单元格OBjective-C中的标签文本(动态)增加单元格高度【英文标题】:Increase the Cell Height based on the label text(Dynamic) in cell OBjective-C 【发布时间】:2017-03-23 06:39:34 【问题描述】:如何根据单元格中的标签文本(动态)增加单元格高度。在下面的代码中 lblAnswer 正在获取动态数据,基于此单元格高度应该增加。尝试了下面的代码,但对我不起作用。 TIA
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
EmpViewCell *cell = (EmpViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[EmpViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.lblAnswer.lineBreakMode = NSLineBreakByWordWrapping;
cell.lblAnswer.numberOfLines = 0;
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EmpViewCell" owner:self options:nil];
for (id currentObject in topLevelObjects)
if ([currentObject isKindOfClass:[UITableViewCell class]])
cell = (EmpViewCell *) currentObject;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
NSMutableDictionary* emmpdict = [_emparr objectAtIndex:indexPath.row];
cell.lblEmpName.text = [NSString stringWithFormat:@"%@",[emmpdict objectForKey:@"EmployeeName"]];
cell.lblQuestion.text=[NSString stringWithFormat:@"%@",[emmpdict objectForKey:@"Question"]];
cell.lblAnswer.text=[NSString stringWithFormat:@"%@",[emmpdict objectForKey:@"Answer"]];
return cell;
【问题讨论】:
***.com/a/40035858/6656894 参考这个答案 ***.com/a/39888662/6656894这个答案非常适合您的问题 Dynamically change UITable cell height?的可能重复 【参考方案1】:您可以使用UITableViewAutomaticDimension
轻松实现此目的。
只需使用下面的鳕鱼e:
your_tableView.estimatedRowHeight = 100;
//或任何临时值,因为它会在获得动态高度后被替换
your_tableView.rowHeight = UITableViewAutomaticDimension;
注意:要正常工作,请确保在 tableViewCell 中正确应用所有约束
【讨论】:
【参考方案2】:如果您在 Storyboard 中将 UILabel 添加到 UITableviewCell,则不会将单元格设为 nil。那么你的一些代码将不会执行,即 if(cell == nil) 因为 cell 不是 nil。
在情节提要中进行以下更改: 确保您已为 UILabel 到 UITableViewCell contentView 提供了顶部、底部、前导和尾随约束。
-
然后将 UILabel 的行数设置为“0”,并将换行符设置为“自动换行”。
在 UITableViewDelegate heightForRow 方法的控制器中:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
tableView.estimatedRowHeight = 100;
return UITableViewAutomaticDimension;
这将有助于解决上述要求。
【讨论】:
【参考方案3】:对于新的 ios 8,有一种新方法可以让这一切变得简单。
目标c:
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
self.tableView.estimatedRowHeight = 40.0; // for example. Set your average height
self.tableView.rowHeight = UITableViewAutomaticDimension;
[self.tableView reloadData];
迅速 3.0:
override func viewWillAppear(animated: Bool)
self.tableView.estimatedRowHeight = 40 // for example. Set your average height
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.reloadData()
【讨论】:
以上是关于根据单元格OBjective-C中的标签文本(动态)增加单元格高度的主要内容,如果未能解决你的问题,请参考以下文章
根据标签文本长度动态自定义 UITableViewCell 的高度