簡體   English   中英

UITableViewCell中的UILabel的高度問題

[英]Height issues with UILabel in UITableViewCell

我在UITableViewCell中的UILabel遇到了一些麻煩,該問題很好地擴展了它的高度。 但是,當單元被重用且UILabel文本更改時,向下滾動時以正確的高度向上滾動通過的標簽,這是錯誤的。

據我了解,這是UILabel高度的問題,但我不知道發生什么以及為什么發生。

以下是發生的視頻:

UITableView

您可以看到圖像下方表格單元格中的標簽看起來不錯,但是當我向上滾動時,它們突然只有兩行,而不是四行。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    InstagramMedia *media = mediaArray[indexPath.section];

    CGSize maximumLabelSize = CGSizeMake(304.0f, 20000.0f);
    CGSize expectedLabelSize = [media.caption.text sizeWithFont:[UIFont systemFontOfSize:13.0f] constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];

    return (320.0f + expectedLabelSize.height + 20.0f);
}

我在這里想念什么嗎?

嘗試這個 :

- (CGFloat)tableView:(UITableView *)_tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 186, 0)]; //max width that is allowed for label
    lbl.numberOfLines = 0;
    lbl.lineBreakMode = NSLineBreakByWordWrapping;

    int GAP = 3;
    float height = 0;
    float fontSize = 14;
    NSString *cellText = yourtext;
    lbl.font= [ UIFont fontWithName:FONT_NAME_Ubuntu size: fontSize];
    bl.text = cellText;
    [lbl sizeToFit];
    height += lbl.frame.size.height;
    height += GAP;

    return height;
  }         

或者您可以嘗試以下方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

        /*
        for dynamic cell heigh according to the description display in cell
         */

        NSDictionary *dict1 = (NSDictionary*)[array objectAtIndex:indexPath.row];
        NSString *cellText = [dict1 valueForKey:@"test"];
        UIFont *cellFont = [UIFont fontWithName:FONT_NAME_GOTHAM_4 size:11.0];
        CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
        CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];


            return labelSize.height + 80;


}

我嘗試使用略有不同的方法,並且它在模擬器中有效。 單元格保持高度滾動。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    InstagramMedia *media = mediaArray[indexPath.section];

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:12], NSFonatAttributeName, nil];
    NSAttributedString *textStr = [[NSAttrebutedString alloc]initWithString:media.caption.text attributes:attributes];
    CGSize maximumLabelSize = CGSizeMake(304.0f, 20000.0f);
    CGRect expLblRect = [textStr boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];

    return (320.0f + expLblFrame.size.height + 20.0f);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM