简体   繁体   中英

Dynamic height of UITableViewCell with storyboard

I have read alot about dynamic height for UITableViewCell and for the life of me I cannot get it working.

I have a uilabel with dynamic content within a dynamic cell.

I am using the storyboard and have the constraints as so :

在此处输入图片说明

I am populating the table using

- (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;
}

I do not know why everything I have tried has failed. I am thinking it may be the connections on the uiLabel?

This is it , Right :

-(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 ;

    }

Finally, at the delegate of cellForRowAtIndexPath: don't forget to make the UILabel flexible for text :

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

    return cell;

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM