具有故事板的UITableViewCell的动态高度

时间:2014-05-02 11:40:12

标签: ios uitableview

我已经阅读了很多关于UITableViewCell的动态高度的内容,而且对于我的生活,我无法让它发挥作用。

我在动态单元格中有动态内容的uilabel。

我正在使用故事板并且具有约束条件:

enter image description here

我正在使用

填充表格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"labelCell";

    detailTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[detailTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    cell.dynamicLabel.text = sectionString;

    return cell;
}

我不知道为什么我所尝试的一切都失败了。我在想它可能是uiLabel上的联系?

1 个答案:

答案 0 :(得分:0)

就是这样,对:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row == 0) {
        NSString *text = myText;// [myArray objectAtIndex:indexPath.row];
        CGSize size;
        if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
            // code here for iOS 5.0,6.0 and so on
            CGSize fontSize = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17]];
            size = fontSize;
        }
        else {
            // code here for iOS 7.0
            NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                  [UIFont fontWithName:@"Helvetica Neue" size:19], NSFontAttributeName,
                                                  nil];
            CGRect fontSizeFor7 = [text boundingRectWithSize:CGSizeMake(571, 500)
                                                     options:NSStringDrawingUsesLineFragmentOrigin
                                                  attributes:attributesDictionary
                                                     context:nil];
            size = fontSizeFor7.size;

        }
        NSLog(@"indexPAth %ld %f",(long)indexPath.section, size.height);

        return size.height +30 ;

    }

最后,在cellForRowAtIndexPath的委托中:不要忘记让UILabel灵活处理文本:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // ........
    cell.dynamicLabel.text = sectionString;
     cell.dynamicLabel.numberOfLines = 0;

    return cell;

}