我想知道是否可以使用具有动态高度的样式UITableViewCell
的标准UITableViewCellStyleSubtitle
?
如果是,那么如何实现呢?
numberOfLines
和cell.textLabel
的{{1}}属性设置为cell.detailTextLabel
。好吧,如果您的0
包含多行内容且textLabel
包含单行内容,则tableView会自动调整单元格高度。但如果它是其他方式,那么它不会!这是Apple的错误吗?或预期的功能?
以下是截屏
答案 0 :(得分:0)
您的问题在这里得到了很好的回答,对于您的用例,您将不得不对UITableViewCell进行子类化:Swift Automatic Row Height for Subtitle Cell
我认为字幕的静态高度是有意的,因为字幕的用户交互是为了一目了然地传达信息,而不是单元格指向的内容:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html
答案 1 :(得分:0)
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 10;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
cell.textLabel.text = @"Title";
cell.detailTextLabel.text = @"SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text SubTitle text";
cell.detailTextLabel.numberOfLines = 0;
return cell;
}
答案 2 :(得分:-1)
您可以使用给定的字符串
获取该标签所需的总行数- (int)lineCountForLabel:(UILabel *)label {
CGSize size = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size lineBreakMode:UILineBreakModeWordWrap];
return ceil(size.height / label.font.lineHeight);
}
然后将totalNumberOfLines与一行的高度相乘,并在HeightForRowAtIndexPath中返回该计数。