根据UILabel文本和聊天图像自动调整单元格

时间:2016-08-31 07:09:01

标签: ios autoresize

我的问题是如何在UITableViewCell中调整大文字和固定尺寸的图像。
我需要根据 WhatsApp 等数据将单元格设为autoresize。我该怎么做。 当我使用UILabel时,我的单元格正在调整大小,但是在图像的情况下,它会搞砸所有内容。

请建议我。提前谢谢。

@ddb这是我正在使用的源代码。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [adminDataArray count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier=@"admincell";
    adminCell =[tableView dequeueReusableCellWithIdentifier:identifier];
    if (adminCell==nil) {
        adminCell=[[AdminPostTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    adminCell.selectionStyle=UITableViewCellSelectionStyleNone;
    [adminCell setBackgroundColor:[UIColor clearColor]];
    NSMutableDictionary *getAdminDataDictionary=[adminDataArray objectAtIndex:indexPath.row];
    if ([getAdminDataDictionary objectForKey:@"TEXT"])
    {
        adminCell.lblSenderAdminPage.text=[getAdminDataDictionary objectForKey:@"TEXT"];
        adminCell.lblSenderAdminPage.textColor=[UIColor blackColor];
        adminCell.lblSenderAdminPage.backgroundColor=[UIColor whiteColor];
        adminCell.lblSenderAdminPage.preferredMaxLayoutWidth=305;
        adminCell.lblSenderAdminPage.layer.masksToBounds=YES;
        adminCell.lblSenderAdminPage.layer.cornerRadius=5;
        adminCell.lblSenderAdminPage.layer.borderWidth=1.0f;
        adminCell.lblSenderAdminPage.layer.borderColor=[UIColor blackColor].CGColor;
    }
    else if ([getAdminDataDictionary objectForKey:@"IMAGE"]){        
        adminCell.imgSenderAdminPage.image=[getAdminDataDictionary objectForKey:@"IMAGE"];
    }
    return adminCell;
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用

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

    CGSize messageSize  // Your message size
    if (img) {
        CGFloat imgHeight = img.size.height;  // Image size
        return messageSize.height + imgHeight + 2* textMarginVertical;
    } else {
        return messageSize.height + 2* textMarginVertical;
    }
}

在类顶部声明

static CGFloat textMarginVertical = 7f;

快乐编码..