具有动态高度的标准UITableViewCell

时间:2015-04-22 07:56:19

标签: ios objective-c uitableview

我想知道是否可以使用具有动态高度的样式UITableViewCell的标准UITableViewCellStyleSubtitle

如果是,那么如何实现呢?

  • 我不想为单元格自定义和创建新类和笔尖。
  • 我已将numberOfLinescell.textLabel的{​​{1}}属性设置为cell.detailTextLabel

好吧,如果您的0包含多行内容且textLabel包含单行内容,则tableView会自动调整单元格高度。但如果它是其他方式,那么它不会!这是Apple的错误吗?或预期的功能?

以下是截屏

enter image description here enter image description here

3 个答案:

答案 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中返回该计数。