根据 UILabel 文本和图像自动调整单元格大小,例如聊天

Posted

技术标签:

【中文标题】根据 UILabel 文本和图像自动调整单元格大小,例如聊天【英文标题】:Autoresize cell according to UILabel text and image like Chatting 【发布时间】:2016-08-31 07:09:01 【问题描述】:

我的问题是如何调整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;

【问题讨论】:

请分享您当前的源代码 试试这个链接***.com/a/14841373/4970453 【参考方案1】:

你可以试试

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

编码愉快..

【讨论】:

这里的“img”是什么? 但是当我将大小设置为:- CGFloat imgHeight =admincell.imgSenderAdminPage.size.height; @Abhishek Sharma 不是 UIImageView。它是 UIImage。这是 CGFloat imgHeight =admincell.imgSenderAdminPage.size.height 工作??? 不,先生。请给我一些建议?

以上是关于根据 UILabel 文本和图像自动调整单元格大小,例如聊天的主要内容,如果未能解决你的问题,请参考以下文章

以自定义样式 UITableViewCell 自动调整 UILabel

如何根据里面的 UILabel 子视图调整 UICollectionView 中的单元格大小

以编程方式动态调整多行 UILabel 和随附的表格视图单元格

tableview 单元格我们如何快速调整单元格的大小以及图像和标签

图像在表格视图单元格中下载后调整大小

在自定义单元格中调整 iOS 7.1 中的 UILabel 大小