2014-05-02 129 views
0

我已經讀了很多有關動態高度UITableViewCell和我的生活我無法得到它的工作。動態高度的UITableViewCell與storybaord

我有一個動態單元格內的動態內容的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

我相信你仍然需要計算'heightforrowatindexpath'上每個單元的高度。 –

+0

嘗試'UITableView'的'heightForRowAtIndexPath:'方法。如果您需要根據cellHeight更改'UILabel'的高度,請將'UILabel'的'Bottom space'添加到'container' – Akhilrajtr

回答

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; 

} 
+0

hi @kumar KL。這種方法工作似乎有最大的尺寸。我能確認幾件事嗎?爲什麼+30加在最後的高度?並且將boudingRectWithSize限制爲最大高度? – memyselfandmyiphone

+0

+30僅用於文本和單元格之間的間距,您可以將其更改爲您的需要。和boudingRectWithSize - 它不是一個常量值,根據你的標籤改變 –